Автор

13 05.2017
Анимированный SVG слайдер

Анимированный SVG слайдер


Во время поиска в Интернете для вдохновения мы столкнулись с красиво оформленным веб-сайтом Honda HR-V. Когда вы переходите от раздела к другому, переход украшается анимированной фигурой, созданной с помощью элемента <canvas>.

 

ДЕМО
ИСХОДНИКИ

 

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

Используемые ресурсы:

  1. Snap.svg для анимации элементов SVG.
  2. Иконки из библиотеки Nucleo.
  3. Изображения из Unsplash.

 

Создание структуры

HTML структурирован в 3 основных элемента: неупорядоченный список ul.cd-slider, содержащий слайды, упорядоченный список ol.cd-slider-navigation для навигации слайдера и оболочку div.cd-svg, Используется для создания анимированной формы, видимой при переключении с одного слайда на следующий.

<section class="cd-slider-wrapper">
<ul class="cd-slider">
<li class="visible">
<div>
<h2>Animated SVG Slider</h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Animi, explicabo.</p>
<a href="#0" class="cd-btn">Article &amp; Download</a>
</div>
</li>

<li>
<!-- slide content here -->
</li>

<!-- additional slides here -->
</ul> <!-- .cd-slider -->

<ol class="cd-slider-navigation">
<li class="selected"><a href="#0"><em>Item 1</em></a></li>
<li><a href="#0"><em>Item 2</em></a></li>
<li><a href="#0"><em>Item 3</em></a></li>
<li><a href="#0"><em>Item 4</em></a></li>
</ol> <!-- .cd-slider-navigation -->

<div class="cd-svg-cover" data-step1="M1402,800h-2V0.6c0-0.3,0-0.3,0-0.6h2v294V800z" data-step2="M1400,800H383L770.7,0.6c0.2-0.3,0.5-0.6,0.9-0.6H1400v294V800z" data-step3="M1400,800H0V0.6C0,0.4,0,0.3,0,0h1400v294V800z" data-step4="M615,800H0V0.6C0,0.4,0,0.3,0,0h615L393,312L615,800z" data-step5="M0,800h-2V0.6C-2,0.4-2,0.3-2,0h2v312V800z" data-step6="M-2,800h2L0,0.6C0,0.3,0,0.3,0,0l-2,0v294V800z" data-step7="M0,800h1017L629.3,0.6c-0.2-0.3-0.5-0.6-0.9-0.6L0,0l0,294L0,800z" data-step8="M0,800h1400V0.6c0-0.2,0-0.3,0-0.6L0,0l0,294L0,800z" data-step9="M785,800h615V0.6c0-0.2,0-0.3,0-0.6L785,0l222,312L785,800z" data-step10="M1400,800h2V0.6c0-0.2,0-0.3,0-0.6l-2,0v312V800z">
<svg height='100%' width="100%" preserveAspectRatio="none" viewBox="0 0 1400 800">
<title>SVG cover layer</title>
<desc>an animated layer to switch from one slide to the next one</desc>
<path id="cd-changing-path" d="M1402,800h-2V0.6c0-0.3,0-0.3,0-0.6h2v294V800z"/>
</svg>
</div> <!-- .cd-svg-cover -->
</section> <!-- .cd-slider-wrapper -->

 

Добавление стиля

По умолчанию все слайды имеют opacity: 0, находятся в абсолютной позиции и размещаются одна поверх других top: 0 and left:0. Класс .visible добавляется к выбранному слайду, чтобы сделать его видимым opacity: 1.

.cd-slider-wrapper {
  position: relative;
}
 
.cd-slider > li {
  position: absolute;
  top: 0;
  left: 0;
  opacity: 0;
}
.cd-slider > li.visible {
  /* selected slide */
  position: relative;
  z-index: 2;
  opacity: 1;
}

 

Обработка событий

Чтобы анимировать SVG, мы анимировали атрибут 'd' элемента пути внутри контейнера .cd-svg.

Прежде всего, мы должны были определить различные шаги анимации (в нашем случае 5 шагов для анимации от слайда к следующему и еще 5 шагов для анимации от слайда к предыдущему); В основном нам нужно было создать 10 различных элементов пути svg (все с одинаковым числом опорных точек для правильной работы анимации), как показано на следующем скриншоте (обратите внимание, что некоторые шаги кажутся пустыми, но все они содержат путь).

 

Как только пути определены, мы добавили в .cd-svg-cover атрибут data-stepn (по одному для каждого шага), равный атрибуту 'd' для определенного пути (чтобы легко получить его с помощью JavaScript).

Затем мы использовали метод animate (), предоставленный Snap.svg для анимации пути к следующему:

var svgCoverLayer = $('.cd-slider-wrapper').find('div.cd-svg-cover'),
	svgPath = Snap('#cd-changing-path'),
	path1 = svgCoverLayer.data('step1');
 
svgPath.animate({'d': path2}, 300, customMinaAnimation, function(){
	//...
});

 

Вот и всё!


vk.com/club.ssdru

Подписывайтесь на нашу группу в контакте vk.com/club.ssdru


Статьи по темеjQuery

24 06.2014
Анимированный SVG слайдер

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


30 04.2013
Анимированный SVG слайдер

Модальные окна достаточно эффективное решение в современном веб-дизайне, кроме того, что пользователь остается на той же странице и получает необходимую информацию, так и красивые окна позволяют раздвинуть границы веб-дизайна, добавив особую изюминку в дизайн. Как вы уже догадались в сегодняшнем уроке речь пойдет о создании красивых модальных окон с помощью небольшого плагина jquery. Данный способ реализации окна имеет множество настроек, что позволит подогнать плагин под необходимые вам параметры, затратив при этом минимум усилий.


06 06.2013
Анимированный SVG слайдер

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


10 04.2013
Анимированный SVG слайдер

Слайдер с различными эффектами переходов (7 различных эффектов, в том числе 3D). Адаптер представляет собой легкий контент-слайдер, простой интерфейс для разработчиков и создания 2D или 3D слайд анимации переходов.
Добавлена поддержка 3D для webkit и Mozilla, всех других браузерах будет запасной вариант изящно простой fade перехода при использовании 3D-эффекты.
Все 2D переходы между слайдами были протестированы в IE6+, и всех других современных браузерах.


105 Публикаций

Раскрутка в соцсетях

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


Перейти в Блог

О КОМПАНИИ

Studio Design существует с 2001 года. Основной нашей деятельностью до 2007 года было видеопроизводство ( видеореклама и документальные фильмы, о чем подробно описано в нашем блоге ). С 2007 года, вот уже как лет, наша основная специфика - это создание сайтов для бизнеса или частной деятельности, веб дизайн, а также поддержка и администрирование готовых проектов. Каждая выполненная нами работа - это уникальный, а самое главное, адаптивный под все современные мобильные устройства дизайн сайта. Мы готовы создать сайт с нуля для каждого клиента с любого уголка России! Мы поможем Вам в создании, как одностраничных сайтов – визиток, так и крупных интернет магазинов или корпоративных сайтов. А все наши работы, большинство из которых действуют и по сей день!

Close

Целовальников Сергей


Веб-дизайн, HTML5, CSS3, jQuery, JavaScript, Верстка.

Верстальщик с большим опытом работы. Занимаюсь созданием сайтов с 2005 года. Постоянно обучаюсь и совершенствую свои навыки. Веду свои проекты, в том числе и данный блог.

Close