Как получить окно просмотра, рассматриваемое как ширина = ширина устройства в Fancybox
Я хотел бы иметь два размера изображений, для маленьких и больших экранов. С fancybox, я использую srcset
атрибут для изменения изображения fullview, как описано в демонстрации fancybox, с чем-то вроде этого:
<a data-fancybox="test-srcset"
data-type="image"
href="img1200px.jpeg"
data-srcset="img1200px.jpeg 1200w,
img640px.jpeg 640w"
>
<img width="250" src="img250px.jpeg" />
</a>
Полный пример из fancybox: https://codepen.io/anon/pen/wNdyYm?editors=1000
На своих мобильных страницах я настроил мета:
<meta name="viewport" content="width=device-width" />
Но с fancybox, нет никакой возможности установить его, и высокое разрешение загружается (1200 пикселей) вместо маленького на мобильном.
Что я могу сделать? Есть ли взлом JQuery или что-нибудь еще?
Спасибо
2 ответа
На самом деле, сценарий устанавливает тот же srcset
значение тега изображения, остальное зависит от браузера. Но между браузерами существует несогласованность в отношении того, как они выбирают, какой источник использовать, например, посмотрите эту демонстрацию https://codepen.io/fancyapps/pen/LJwvzY?editors=1000 в chrome и ff и попробуйте изменить их размер.,
Поэтому я пришел к решению CSS/ HTML, используя meta
тег и медиа-запросы @media
, и нет srcset
приписывать.
- Использовать
class
для каждой ссылки отображать ее или нет в зависимости от ширины устройства. - Используйте разные ссылки на полное изображение для каждого.
- Использовать
data-fancybox
атрибут для различения двух полноценных галерей.
Это должно работать.
<!-- To have mobile considering the real width -->
<meta name="viewport" content="width=device-width" />
<div id="image1">
<a data-fancybox="gallery-screen"
data-type="image"
href="img1200px.jpeg"
class="screen"
>
<img width="250" src="img250px.jpeg" />
</a>
<a data-fancybox="gallery-mobile"
data-type="image"
href="img640px.jpeg"
class="mobile"
>
<img width="250" src="img250px.jpeg" />
</a>
</div>
CSS для отображения хорошей ссылки на изображение:
@media all and (max-width: 640px) {
.screen {
display: none;
}
}
@media all and (min-width: 641px) {
.mobile {
display: none;
}
}
Смотрите пример кода