Диагональное портфолио с вращением изображений
В данном уроке мы разберемся, как создать портфолио с вращением элементов по диагонали. С такой техникой можно построить интересный и выделяющийся интерфейс для сайта-визитки.
Разметка
Разметка должна быть минимальной настолько, насколько возможно. Нужно избегать дублирования элементов и соблюдать требования семантики.
<ul class="portfolio"> <li><img src="/lessons/les1217/img/portfolio-1.jpg" alt="Image 1"></li> <li><img src="/lessons/les1217/img/portfolio-2.jpg" alt="Image 2"></li> <li class="feature"><img src="/lessons/les1217/img/portfolio-3.jpg" alt="Image 3"></li> <li><img src="/lessons/les1217/img/portfolio-4.jpg" alt="Image 4"></li> <li><img src="/lessons/les1217/img/portfolio-5.jpg" alt="Image 5"></li> </ul>
Вот вся разметка, которая нужна для нашего урока. Это простой неупорядоченный список изображений для портфолио. Класс “feature” применяется к элементу списка для выделения текущего активного изображения. Для нашего портфолио нужны только большие формы изображений, для миниатюр будем использовать масштабирования CSS. В нашем примере используются изображения размером 600 x 300 px.
CSS
Мы построим весь дизайн и анимацию с помощью CSS, а движение будет реализовано в JavaScript. Начнем с неупорядоченного списка.
ul.portfolio{ margin: 50px auto 0; -ms-transform:rotate(30deg); -webkit-transform:rotate(30deg); -moz-transform:rotate(30deg); width: 200px; }
Мы вращаем весь список на 30 градусов по часовой стрелке и сдвигаем его вниз от верха документа. Это будет база для вращения. Теперь перейдем к определению отдельных пунктов списка и изображениям.
ul.portfolio li{ border: 1px solid #999999; height: 100px; list-style:none; margin-left: 0; opacity: 0.5; -webkit-transition: all 0.5s ease-in; -moz-transition: all 0.5s ease-in; -o-transition: all 0.5s ease-in; width: 200px; } ul.portfolio li img{ height: 100px; -webkit-transition: all 0.5s ease-in; -moz-transition: all 0.5s ease-in; -o-transition: all 0.5s ease-in; width: 200px; }
Устанавливаем ограничения для элементов списка и изображений для масштабирования. Так как уменьшенные картинки будут располагаться вне фокуса внимания, установим для них прозрачность 0.5, чтобы активное изображение выделялось еще больше. Здесь также устанавливается основа для трансформаций. Префиксы webkit, moz и o соответствуют определенным браузерам, в которых будет действовать наше портфолио. Свойство transition используется в сокращенном варианте. Устанавливаются значения для свойства, длительности и функции перехода. Значение свойства all означает, что трансформация будет проводиться для всех свойств, которые различаются у двух элементов. В нашем случае это будет касаться рамок, высоты, ширины, прозрачности и левого поля. Длительность определяет время перехода. В нашем случае все будет изменяться за полсекунды. Эффект перехода определяет функцию трансформации свойств от времени. Осталось определить свойства для активного элемента:
ul.portfolio li.feature{ border: 5px solid #dddddd; -moz-box-shadow: 3px 3px 4px #222222; -webkit-box-shadow: 3px 3px 4px #222222; box-shadow: 3px 3px 4px #222222; height: 300px; margin-left: -200px; opacity: 1; position: relative; -ms-transform: rotate(-30deg); -webkit-transform: rotate(-30deg); -moz-transform: rotate(-30deg); width: 600px; z-index: 100; } ul.portfolio li.feature img{ height: 300px; width: 600px; }
Здесь проводится определение стилей для пункта с классом “feature”, чтобы изменить наследуемые свойства и создать другую конечную точку трансформации. Отрицательно значение поворота возвращает пункт списка в горизонтальное положение. Установка высокого значения свойства z-index помещает изображение выше всех остальных в списке. Также нужно установить относительное позиционирование. Мы также увеличиваем прозрачность и размер изображения.
Теперь наш список готов для действий.
Javascript
Настала очередь для программирования перемещений. Так как трансформации определены в CSS, то нам нужно подготовить совсем немного кода jQuery для полноценной работы портфолио. Наши трансформации зависят от класса feature, поэтому мы используем jQuery, чтобы переключать класс по нажатию кнопки мыши:
$(document).ready(function(){ $('.portfolio li').click(function() { var new_feature = $(this); if (!new_feature.hasClass('feature')){ $('li.feature').removeClass('feature'); setTimeout(function(){ new_feature.addClass('feature'); }, 500); } }); });
Как только на пункте списка нажала кнопку мыши, мы первым делом проверяем, не является ли он активным в текущий момент. Если это новый пункт, то надо удалить класс feature со старого пункта. Это приведет к трансформации изображения - оно повернется и уменьшится, чтобы стать опять элементом структуры списка. Функция setTimeout служит для организации последовательных трансформаций, а не одновременных. Как только первое событие будет обработано, нажатие кнопки мыши на пункте li начнет другую трансформацию. Комбинация jQuery и CSS3 представляет собой отличную комбинацию для творчества. Можно попробовать с модификацией других свойств пункта списка, чтобы добиться различных визуальных эффектов.
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/VcEuM2K5AvM/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
Великие умы обсуждают идеи, средние - обсуждают поступки, а малые - людей Индийская пословица |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.