Галерея на чистом CSS

Галерея на чистом CSS Дата публикации: 11.08.2010 ...

Дата публикации: 11.08.2010

Когда слышишь «галерея» представляешь себе javascript плагин, а-ля lightbox или highslide. Пора расстаться с этими стереотипами — давайте рассмотрим галерею на чистом CSS, без использования javascript.

Что там можно увидеть

  • Opera 10+, Chrome 3+, Safari 4+ — тени, поворот фото, плавное увеличение фото при наведении, при клике плавный разворот и увеличение фото, плавный показ подписи к фото, реакция на клик по кнопке «закрыть»
  • Firefox 3.5+ — тени, поворот фото, при клике увеличение фото (без анимации), реакция на клик по кнопке «закрыть»
  • IE6-8, и другие браузеры более старых версий — увеличение фото по клику на маленькую, реакция на специальную кнопку «закрыть»

Как это работает

Уверен, многие в курсе, что тень для блока способно сделать box-shadow в сочетании с некоторыми вендорными свойствами. Возможно, вам потребуются кровельные работы в технике двойного фальца, смотрите здесь https://falcgroup.com. Остальное же рассмотрим детальней. Алгоритм:

  1. берем большую фото, с помощью CSS свойств width и height уменьшаем ее до нужного размера;
  2. с помощью CSS3 свойства transform делаем наклон фото;
  3. при наведении на фото (:hover) немного увеличиваем размеры фото;
  4. когда элемент получает фокус или становится активным (псевдоклассы :active и :focus — так и происходит эмуляция события onClick) увеличиваем фото до ее реальных размеров и помещаем в центр блока галереи;
  5. поворот большого фото в нормальное положение осуществляется свойством transform, а плавность поворота transition;
  6. реакция на клик по кнопке «закрыть» — так просто ссылка теряет фокус и возвращается в свое исходной состояние. аналогичное действие будет, если кликнешь, например, вне блока галереи;
  7. плавность показа кнопки «закрыть» и подписи реализуется все тем же transition.

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

Заметки

  • Для ссылок я добавил атрибут tabindex. Это позволяет webkit браузерам нормально реагировать на клик по фото (без этого атрибута, чтобы фото увеличивалось нужно было удерживать левую кнопку мыши). А так же дает возможность в некоторых браузерах делать табобход галереи.
  • В данном примере мне не нравится, что увеличение фото всегда начинается с верхнего левого угла, а не от текущего положения маленького фото. Автор примера решал это путем указания начальных координат для ссылок. Когда ссылка получала фокус, она получала абсолютное позиционирование, смещалась к заданным координатам. Но это вело к серьезному багу в Opera 10.5 (мелкие фото разъезжались по странице), плюс это не очень универсально. Мне же не удалось и избежать проблем с Opera и одновременно сделать увеличение от текущей позиции.

Какой от этого практический толк?

Логичный вопрос. Не нужно обладать сверхнаблюдательностью чтобы заметить разное поведение галереи в разных браузерах. И то, что тут куча недостатков и багов. Это все понятно. Браузеры только начинают вводить поддержку HTML5 и CSS3. Цель этого примера — наглядно продемонстрировать новые возможности, которые несет в себе CSS3.

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

Материалы

Теги: ,

Смотрите также в этом разделе

Смежные материалы, которые могут быть вам полезны

  • 10 причин, по которым Flash по-прежнему остается популярной платформой для разработки игр
  • Apps vs. Web — выбор между веб и нативным приложением
  • Ben the bodyguard — интересный пример
  • Boilerplate или Bootstrap – что выбирать при создании проекта?
  • Google и Arcade Fire: как соединить технологии и искусство
  • Mac vs PC. Часть 2.
  • Tron — эффектный комикс на HTML5
  • Windows 7 глазами пользователя
  • Windows и Mac о Chrome OS
  • Будущее началось
  • Взгляд одного пользователя на современные браузеры
  • Война браузеров в картинках
  • Волшебный фон на CSS
  • Если бы IT-компании делали автомобили
  • Интервью: Лидеры мировой индустрии онлайн игр об HTML5, Flash и своих планах на будущее
  • Интервью: Марчин Вичери — создатель Google Pacman Logo, HTML5 Slide Deck и других интересных вещей
  • Интернет и соц сети
  • Как делаются сайты (юмор)
  • Как написать хороший код
  • Как происходит разработка сайта — бэкенд-фреймворки (часть 4)
  • Как происходит разработка сайта (часть 3) Фронтенд-фреймворки
  • Как улучшить кэширование в браузере?
  • Какая она — реальная жизнь айтишника
  • Комикс «Социальная сеть в Раю»
  • Многоуровневый cuSel. Быть или не быть?
  • На пенсии (комикс)
  • Наглядное пояснение значений CSS свойства vertical-align
  • Нескучные HTML формы
  • Нестандартный textarea: в поисках решения
  • Перевод интервью с Эриком Майером (Eric Meyer)
  • Песня о CSS3
  • Погружение в HTML5
  • Почему появился HTML5
  • Разработка сайта (часть 1)
  • Разработка сайта (часть 2)
  • Реклама противоядия для трудоголиков или что такое подработка
  • Синтаксис псевдоэлементов :after и :before
  • Современный подход к веб-стандартам
  • Топ 5 ошибок массивных CSS