На моем сайте у меня есть несколько галерей, которые открываются FancyBox. Структура: показать одну фотографию из галереи, и когда вы нажмете ее, откроется fancybox, и вы перемещаетесь по фотографиям из этой галереи в fancybox modal.
Код: основное изображение показано
<li><a id="some_id" class="grouped_elements" rel="some_rel" href="some_href"><img src=""></a></li>
А затем фотографии с тем же атрибутом "rel", которые "принадлежат" этой галерее:
<li><a id="some_id" style="display:none;" class="grouped_elements" rel="some_rel" href="some_href"><img src=""></a></li>
На фотографиях, принадлежащих этой галерее, я помещаю "display: none"; поэтому они не отображаются на странице, но только когда вы открываете fancybox, нажимая на основную фотографию.
Это работает, но проблема в том, что у меня много фотографий и загрузка на страницу очень длинная, так есть способ предотвратить фото с "display: none" от загрузки, чтобы заставить его загружаться после открытия какой-либо галереи?
EDIT: забыл упомянуть, я использую fancybox 2.1.5
Я бы рекомендовал использовать вызов AJAX для извлечения галереи/изображений, которые пользователь запрашивает. Это будет асинхронным и не повлияет на загрузку страницы. Как только получен успешный ответ, вы можете инициализировать $(). Fancybox(), используя данные ответа
Ваше решение может быть намного проще:
Оберните все ваши якоря в скрытом div
вместо этого скрывая их по отдельности и удалите <img>
со всех скрытых привязок, тем самым вы не загружаете какое-либо (большое) изображение, независимо от того, видимо или нет:
Основная фотография:
<li><a id="some_id" class="grouped_elements" rel="some_rel" href="some_href"><img src=""></a></li>
Скрытые фотографии
<div style="display:none">
<a id="some_id" class="grouped_elements" rel="some_rel" href="some_href"></a>
<a id="some_id" class="grouped_elements" rel="some_rel" href="some_href"></a>
... etc.
</div>
Обратите внимание, что вам даже не нужно обертывать их внутри <li>
и этот div
можно поместить в любом месте документа и вне элемента <ul>
.
Два дополнительных комментария:
Убедитесь, что вы не повторяете один и тот же идентификатор в нескольких элементах. Идентификаторы должны быть уникальными в одном документе. Если вы хотите манипулировать несколькими элементами, используя один и тот же селектор в одном документе, вместо этого используйте классы.
Убедитесь, что вы используете измененные изображения для ваших эскизов (<img>
); повторная калибровка большого изображения, чтобы выглядеть маленьким, как миниатюра через css или html, не является (как правило) хорошей идеей.