Диагональное портфолио с вращением изображений
В данном уроке мы разберемся, как создать портфолио с вращением элементов по диагонали. С такой техникой можно построить интересный и выделяющийся интерфейс для сайта-визитки.
Разметка
Разметка должна быть минимальной настолько, насколько возможно. Нужно избегать дублирования элементов и соблюдать требования семантики.
<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-03-13 » Стратегии SEO на 2024 год
- 2024-03-13 » Как использовать анимацию с помощью JavaScript-библиотеки GSAP
- 2024-03-13 » Использование GSAP 3 для веб-анимации
- 2024-03-13 » Cогласование топографической съёмки с эксплуатирующими организациями
- 2024-02-19 » Теряются лиды? Как настроить сквозную аналитику
- 2024-02-17 » Мерч и IT: на что обратить внимание в 2024 году
- 2024-02-16 » Копируем с RSync: основные примеры синхронизации файлов
- 2024-02-15 » Лучшие noCode AI платформы для создания диалоговых ботов
- 2024-02-14 » Факторы ранжирования Google 2024 — исследование Semrush
- 2024-02-12 » Перенос сайта на другой хостинг
- 2024-02-05 » В России сформирован реестр хостинг-провайдеров
- 2024-02-04 » Использование SSH для подключения к удаленному серверу Ubuntu
- 2024-02-03 » Подключаемся к серверу за NAT при помощи туннеля SSH. Простая и понятная инструкция
- 2024-02-02 » Настройка CI/CD для Gitlab-репозитория: схемы и гайд по шагам
- 2024-02-01 » GitLab CI Pipeline. Запуск сценария через SSH на удаленном сервере
- 2024-01-29 » Introduction to GitLab’s CI/CD for Continuous Deployments
- 2024-01-26 » Настройка GitLab CI/CD
- 2024-01-25 » Установка shell gitlab runner
- 2024-01-25 » Установка и регистрация gitlab-runner в docker контейнере
- 2024-01-25 » Переменные Gitlab-Ci
- 2024-01-25 » Настройка CI/CD в GitLab для синхронизации проекта с веб-серверами
- 2024-01-25 » Копирование файлов scp
- 2024-01-21 » Бездепозитные бонусы от казино: обзор условий и правил использования
- 2024-01-18 » Современная обработка ошибок в PHP
- 2024-01-18 » Пример шаблона проектирования MVC в PHP
- 2024-01-18 » Мифический человеко-DevOps
- 2023-12-28 » Google подвел итоги 2023 года в поиске
- 2023-12-28 » 5 ошибок отдела продаж, из-за которых вы теряете клиентов
- 2023-12-28 » Американский суд признал монополию Google на рынках дистрибуции Android-приложений
- 2023-12-28 » Хостинг-провайдер GoDaddy перестанет оказывать услуги пользователям из России
"В будущем на рынке останется два вида компаний: те, кто в Интернет и те, кто вышел из бизнеса." |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.