Новый способ инициализации Фоторамы

В свежей версии Фоторамы я добавил новый способ её инициализации. Теперь в большинстве случаев можно обходится без вот такого инлайн-джаваскрипта:

$(function(){<br>
  $('.fotorama').fotorama();<br>
});

Просто добавляете класс fotorama и блок автоматически превращается в Фотораму:

&lt;div class=&#34;fotorama&#34;><br>
  &lt;img src=&#34;1.jpg&#34;><br>
  &lt;img src=&#34;2.jpg&#34;><br>
  &lt;img src=&#34;3.jpg&#34;><br>
&lt;/div>

Раньше такой способ тоже существовал, но я о нём не рассказывал, потому что ничего нельзя было настроить — инициировалась дефолтная Фоторама. Теперь опции можно указывать с помощью атрибутов data-*:

&lt;div<br>
     class=&#34;fotorama&#34;<br>
     data-backgroundColor=&#34;#797775&#34;<br>
     data-thumbsPreview=&#34;false&#34;<br>
     data-margin=&#34;0&#34;<br>
     data-resize=&#34;true&#34;<br>
><br>
  &lt;img src=&#34;1.jpg&#34;><br>
  &lt;img src=&#34;2.jpg&#34;><br>
  &lt;img src=&#34;3.jpg&#34;><br>
&lt;/div>

А раньше было только так:

&lt;div class=&#34;fotorama&#34;><br>
  &lt;img src=&#34;1.jpg&#34;><br>
  &lt;img src=&#34;2.jpg&#34;><br>
  &lt;img src=&#34;3.jpg&#34;><br>
&lt;/div><br>
&lt;script><br>
$(function(){<br> 
  $('.fotorama').fotorama({<br>
    backgroundColor: '#797775',<br>
    thumbsPreview: false,<br>
    margin: 0,<br>
    resize: true<br>
  });<br>
});<br>
&lt;/script>

Так можно указать все опции, кроме data, html и onShowImg. Прежний способ инициализации и настройки работает без изменений.

Поделиться
Отправить
10 комментариев
Grawl

Интересно. Но без html не будет крутых подписей, а без onShowImg — автоматического переключения.

Вадим Макеев

Есть что-то брезгливое для меня в атрибуте data-backgroundColor=’#797775’. Ты же понимаешь, что подавляющее большинство из тех, кто будет ставить Фотораму, отлично знают, что такое CSS. А ты им всем рекомендуешь писать стили сначало в JS, а потом — внезапно! — прямо в HTML. Странно это.

Артём Поликарпов

Понимаю тебя.

Сначала среди опций появились отступы, паддинги, размер рамки вокруг активной превьюшки — всё это нужно отдавать именно скрипту для правильного подсчёта позиции, пропорций. А дальше я размышлял так — раз уж человек начал настраивать галерею под себя, то ему наверняка удобнее сделать это в одном месте, а не распыляться между JS и CSS. Так появились те немногие опции цвета и фона для настройки шкурки.

Понятное дело, что для глубокой переделки нужно переопределять правила из fotorama.css.

И вот эти опции переехали в HTML, ради более удобного способа инициализации Фоторамы, например, прямо в теле статьи.

Денис Талала

Новый способ чем-нибудь лучше старого?

Артём Поликарпов

Мне он кажется более компактным и быстрым, без левых кусков джаваскрипта.

Grawl

Денис, в первую очередь это — не что-то лучше, а тест-драйв технологий. В данном случае — data-атрибуты.

Вадим Макеев

Эм, ты хочешь сказать, что без задания констант ничего не посчитать налету? Что-то не верится, остальные же скрипты как-то работают без конфигов в динамических условиях.

Артём Поликарпов

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

Или вот — я долго выбирал способ вёрстки фоток в большую бесконечную ленту, пробовал и инлайн-блоки, и флоаты, но остановился на абсолютном позиционировании по некоторым причинам. Поэтому мне нужно знать какой отступ сделать между фотками. И т. д.

Но вообще, большинство опций появилось за компанию, для возможности плаг-энд-плея.

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

Mubarak

Как добавить fancybox при клике на увеличенные картинки в слайдере? Сейчас при клике идет прокрутка к следующему слайду.

Артём Поликарпов

Нужно отключить %%pseudoClick%%, и дописать небольшую функцию, отлавливающую клик и знающую индекс текущей фотографии: http://jsfiddle.net/artpolikarpov/34xwP/.

И как-то из этой функции запускать fancybox.

Grawl

Я это сделал через вставку произвольного HTML в Фотораму и плагин jQuery Tools Overlay.

Коля Митин

Осторожнее, Артём. Открываешь ворота в ад. Твоя фоторама может рухнуть под собственной тяжестью, как римская империя.

Артём Поликарпов

Коля, тебе конкретно эта фича не нравится? Но она почти не добавила кода. Или?

Коля Митин

Могу ошибаться, но ты пытаешься двигаться по пути «вытащить как можно больше настроек нажуру». То есть в прямо противоположную сторону от принципа «интерфейса нет, а функция выполнятеся».

Идеальный интерфейс фоторамы:

Коля Митин

Почему-то запостился комментарий...
...
<div class=«fotorama»>
<img src=«1.jpg> <img src=»2.jpg«> <img src=»3.jpg«>
</div>

и никакого JS, работает как волшебная коробочка. В этом состоянии Фоторама должна быть супер-идеальной, подходящей для 90% пользователей.

Для остальных 10%, кому вдруг надо что-то менять во внешнем виде или поведении придётся разбираться как устроен fotorama.css или курить настройки через JS.

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

Артём Поликарпов

Так всё и делаю. Никакого JS, забить на указание ширины и высоты, клёвые дефолтные пресеты...

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

За %%.fotorama%% спасибо, .%%fotorama_auto%% — явно перебор.

Популярное