Вывод изображения во всплывающем окне

220
15 июля 2017, 09:40

Надумал я сделать изображения как у вк, при нажатие на изображения открывается окно, где само фото и автор, лайки и прочие.

Так сразу первое в голову приходит делать так: всю информацию об авторе, лайки и прочие хранить в бд.

Но тут же вопрос: как загружать данные во время открытия окна и определять id изображения, на которое пользователь нажал и по id загружать данные?

Answer 1

Да, Вконтакте именно так и работает. Открывается изображение - по его ID подтягиваются данные и отображаются.

Можете сделать предзагрузку. К примеру: Открыли изображение - загрузили данные на него, следующее и предыдущее. В таком случае при переключении(назад/вперёд) возьмете данные с кеша и сразу отобразите - не стучась к серверу за ними.

Что бы определить ID - присвойте ему data аттрибут.

Пример:

document.querySelector('div').onclick=openImage; 
 
function openImage(e){ 
	var id = this.getAttribute('data-id'); 
	loadImageData(id); 
  openImageBox(); 
} 
 
function loadImageData(id){ 
alert('Загружаем данные для изображения с ID: '+id) 
} 
function openImageBox(){ 
alert('Открываем большую картинку') 
 
}
div { 
  width:100px; 
  height:100px; 
  background:red; 
}
<div data-id="1"> 
 
</div>

Для лучшего эффекта организуйте так пути:

/thumb/id - для маленькой картинки

/preview/id - для большой картинки

В таком случае вы сможете начать загружать большую картинку сразу же после клика, не дожидаясь данных с сервера

Answer 2

Ид изображения обычно помещать в атрибуты тега img, например

<img src="..." data-id="123" - вот айдишник

Загрузка данных в модальное окно делается с помощью ajax - обычно используют jquery.

READ ALSO
Можно ли изменить стиль &lt;input&gt; и &lt;textarea&gt; в js

Можно ли изменить стиль <input> и <textarea> в js

Есть форма, в ней "инпуты", с ними "текстарея", у этих ребят классstyle-animation

202
Кроссплатформенный календарь [требует правки]

Кроссплатформенный календарь [требует правки]

Нужен кроссплатформенный календарь с возможностью получения из него выбранной даты

237
Как обрезать строку правильно на PHP?

Как обрезать строку правильно на PHP?

Здравствуйте! Как правильно здесь обрезать строку так, чтобы получить только:

299
PHP XML fgets и длинные строки

PHP XML fgets и длинные строки

Задача: Получить ответ от сервера после POST запроса XML

268