Автор

Анимированные заголовки

Анимированные заголовки


Коллекция анимированных заголовков со сменными словами, которые заменяют друг друга с помощью CSS-переходов.

 

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

 

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

 

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

Структура HTML одинакова для каждой анимации. Мы использовали элемент section в качестве контейнера, просто чтобы дать некоторые поля и установить максимальную ширину. Заголовок является тегом h1 tag - block. Каждое слово заключено в тег b, все слова внутри одного элемента span - inline.

Класс .rotate-1 (добавленный в тег h1) определяет применяемый эффект. Если вы просто хотите использовать этот элемент, как он работает: вы меняете класс, вы меняете эффект.

Для некоторых эффектов может потребоваться дополнительный класс. Например: когда каждая буква анимируется отдельно, к тегу h1 нужно добавить класс .letters. Внутри файла index.html вы можете проверить имена классов, применяемых к каждому заголовку.

<section class="cd-intro">
<h1 class="cd-headline rotate-1">
<span>My favourite food is</span>
<span class="cd-words-wrapper">
<b class="is-visible">pizza</b>
<b>sushi</b>
<b>steak</b>
</span>
</h1>
</section> <!-- cd-intro -->

 

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

Давайте посмотрим вместе, как создать эффект Rotate 1. Процесс схож для каждой анимации, не стесняйтесь путешествовать по исходным файлам (или, почему бы нет, попробуйте создать анимацию самостоятельно!).

Прежде всего, давайте применим класс .rotate-1 к тегу h1!

Идея состоит в том, чтобы создать трехмерное вращение: видимое слово должно исчезнуть, вращаясь по оси X, новое слово должно появиться снизу и взять свободное место, всегда вращаясь по оси X.

 

 

Чтобы работать в 3D-пространстве, нам нужно установить перспективное значение, иначе анимированные элементы будут выглядеть плоскими. Помните: свойство Perspective не должно применяться к элементу, который будет анимирован (через CSS Transition, Transformation или Animation), но к родительскому элементу. В этом случае я применил свойство перспективы к .cd-words-wrapper:

.cd-headline.rotate-1 .cd-words-wrapper {
display: inline-block;
perspective: 300px;
}

При наличии свойства Perspective мы нацеливаем элементы b (каждое слово), и мы устанавливаем opacity: 0; и position: absolute;. Таким образом мы скрываем все слова, и мы удаляем их из потока документа, как будто они больше не занимают пространство. Наконец, мы используем .is-visible класс, примененный к первому элементу b (первое слово), и добавляем opacity: 1; и position: relative;. Так мы делаем первое слово видимым.

Обратите внимание, что мы применяем преобразование rotateX (180deg) к каждому слову, чтобы перевернуть его. Значение начала преобразования устанавливается внизу (первое значение X, второе значение Y). Это важная деталь: как вы можете видеть из .gif выше или в демонстрации, начало вращения не является центром, и мы должны указать его в CSS. Тогда, конечно, поворот устанавливается на 0, если применяется .is-visible класс.

.cd-headline.rotate-1 b {
opacity: 0;
transform-origin: 50% 100%;
transform: rotateX(180deg);
display: inline-block;
position: absolute;
left: 0;
top: 0;
}

.cd-headline.rotate-1 b.is-visible {
position: relative;
opacity: 1;
transform: rotateX(0deg);
}

Нам нужно запустить анимацию: с помощью jQuery мы удаляем класс .is-visible из первого элемента и добавляем его ко второму, затем удаляем его из второго и добавляем к третьему и т. Д. - чтобы создать петля. Каждый раз, когда мы удаляем .is-visible класс, мы переключаем его на .is-hidden. Зачем нам нужны 2 класса: в каждом классе мы определяем другую CSS-анимацию. .is-visible - показать слово, .is-hidden, чтобы скрыть его, конечно. Посмотрите, как изменяется CSS с добавлением анимаций:

.cd-headline.rotate-1 b {
opacity: 0;
transform-origin: 50% 100%;
transform: rotateX(180deg);
display: inline-block;
position: absolute;
left: 0;
top: 0;
}

.cd-headline.rotate-1 b.is-visible {
position: relative;
opacity: 1;
transform: rotateX(0deg);
animation: cd-rotate-1-in 1.2s;
}

.cd-headline.rotate-1 b.is-hidden {
transform: rotateX(180deg);
animation: cd-rotate-1-out 1.2s;
}

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

@keyframes cd-rotate-1-in {
0% {
transform: rotateX(180deg);
opacity: 0;
}
35% {
transform: rotateX(120deg);
opacity: 0;
}
65% {
opacity: 0;
}
100% {
transform: rotateX(360deg);
opacity: 1;
}
}

@keyframes cd-rotate-1-out {
0% {
transform: rotateX(0deg);
opacity: 1;
}
35% {
transform: rotateX(-40deg);
opacity: 1;
}
65% {
opacity: 0;
}
100% {
transform: rotateX(180deg);
opacity: 0;
}
}

 

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

Чтобы вызвать анимацию заголовка, мы определили функцию animateHeadline ().

var animationDelay = 2500;
 
animateHeadline($('.cd-headline'));
 
function animateHeadline($headlines) {
	$headlines.each(function(){
		var headline = $(this);
		//trigger animation
		setTimeout(function(){ hideWord( headline.find('.is-visible') ) }, animationDelay);
		//other checks here ...
	});
}

Это используется для запуска функции hideWord () с задержкой в 2.5 секунды. Эта функция удаляет .is-visible класс из первого слова и добавляет его ко второй, удаляя .is-hidden класс из второго и добавляя его к первому слову. Затем hideWord () снова запускается (с той же задержкой), чтобы создать цикл.

function hideWord($word) {
	var nextWord = takeNext($word);
	switchWord($word, nextWord);
	setTimeout(function(){ hideWord(nextWord) }, animationDelay);
}
 
function takeNext($word) {
	return (!$word.is(':last-child')) ? $word.next() : $word.parent().children().eq(0);
}
 
function switchWord($oldWord, $newWord) {
	$oldWord.removeClass('is-visible').addClass('is-hidden');
	$newWord.removeClass('is-hidden').addClass('is-visible');
}

Одно замечание:

Есть некоторые эффекты, которые требуют анимации отдельных букв отдельно (например, эффект типа). Для этих анимаций мы добавили класс .letters в h1 и обернули каждую букву внутри элемента i с помощью функции singleLetters ().

singleLetters($('.cd-headline.letters').find('b'));
 
function singleLetters($words) {
	$words.each(function(){
		var word = $(this),
			letters = word.text().split(''),
			selected = word.hasClass('is-visible');
		for (i in letters) {
			letters[i] = (selected) ? '' + letters[i] + '': '' + letters[i] + '';
		}
	    var newLetters = letters.join('');
	    word.html(newLetters);
	});
}

 

Вот и всё!

Многие материалы на сайте взяты из блогов: "Все для веб-дизайнера Rudebox", "A free library of HTML, CSS, JS nuggets Codyhouse" - полностью переведен и представлен в ознакомительных целях!

vk.com/club.ssdru

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



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

Анимированные заголовки

Стилизация сайта, несомненно, самый важный элемент веб-дизайна. Разработчики стараются сделать более уникальным и привлекательным сайт для своих пользователей, ведь не секрет, что чем лучше дизайн сайт - тем более привлекает положительные отзывы пользователей. В данном уроке мы рассмотрим процесс создание красивой таблицы с ценами на услуги или товары при этом будем использовать исключительно CSS3, никаких изображений для таблицы, и минимум разметки HTML. Такие таблицы помогают пользователю быстро и легко найти то, что ему нужно.


Анимированные заголовки

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


Анимированные заголовки

Буквально перед новым годом задался целью автоматизировать свой сайт, а именно сделать так чтобы с 15 декабря до 15 января работал один стиль CSS, а в остальное время другой!


Анимированные заголовки

Наверное каждый веб мастер сталкивался с проблемой как оформить на своем сайте или на сайте клиента кнопки «поделиться» от известных социальных сетей, при этом не используя сторонних сервисов. Хочу продемонстрировать очень, на мой взгляд интересное решение.


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

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


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

Надёжный хостинг

С нами хостинг удобен и прост, как диван у вас дома. Вы с комфортом размещаетесь, а все внутренние пружины мы берем на себя.

Бесплатный тестовый период, ежедневные бэкапы, неограниченный трафик, акции с бонусами... Конечно, у нас все это есть.


Перейти на хостинг

О КОМПАНИИ

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

Close

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


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

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

Close