Эффекты увеличения и поворота текста, появляющегося поверх изображения, на чистом CSS3
Анимация, продемонстрированная в данной статье, выполнена на чистом CSS3. Она состоит из одного простого полупрозрачного слоя поверх изображения и появляющегося текста, который поворачивается и увеличивается при появлении.
Приведенные CSS стили могут быть использованы для улучшения отдельных моментов веб-дизайна, например, создания «превью» для галерей или статей.
HTML разметка еще никогда не была настолько простой. Каждое изображение является элементом img, который расположен внутри элемента a (простая HTML ссылка, у которой есть атрибут title для появляющегося во время анимации текста). Вот примерный HTML для одного из таких изображений:
<a href="#" title="HTML is a language for web page markup"><img src="nature.jpg" alt=""></a>
Анимация изображения и появляющегося текста состоит из двух частей:
Темная обложка. Это слой, который располагается поверх изображения и занимает все доступное пространство, отведенное под изображение. Это означает, что у данного слоя будут такие же параметры ширины и высоты, как и у изображения, независимо от размеров самого изображения. Данный слой добавляется с помощью CSS псевдо-элемента before. Он является полупрозрачным (CSS свойство opacity). В качестве фона задается черный цвет. Данный слой появляется, когда пользователь наводит курсор мыши на изображение.
Появляющийся текст. Это слой, который располагается поверх слоя с «темной обложкой». Данный слой добавляется с помощью CSS псевдо-элемента after. Это прозрачный слой, который содержит только текст, полученный из значения атрибута title у элемента a. Данный слой спозиционирован по центру (по вертикали и горизонтали). Его анимация включает два эффекта: увеличение и поворот. Данные эффекты достигаются с помощью двух CSS свойств: transform и transition. CSS свойство transform использует функции scale и rotate, чтобы увеличивать и поворачивать данный слой. Вся анимация начинает выполняться, когда пользователь наводит курсор мыши на изображение.
Вот CSS стили, которые генерируют анимационный эффект увеличения:
a { text-align: center; display: inline-block; overflow: hidden; position: relative; text-decoration: none; } a:before { display: block; background-color: rgb(0, 0, 0); content: ""; height: 100%; opacity: 0; position: absolute; width: 100%; z-index: 2; } a:after { font-family: Tahoma; color: white; content: attr(title); display: block; font-size: 30px; font-weight: bold; opacity: 0; padding: 0 3%; position: absolute; text-transform: uppercase; top: 50%; -webkit-transform-origin: 50% 0%; -ms-transform-origin: 50% 0%; transform-origin: 50% 0%; -webkit-transform: scale(0) translateY(-50%); -ms-transform: scale(0) translateY(-50%); transform: scale(0) translateY(-50%); width: 94%; z-index: 3; } a img { border: none; display: block; z-index: 1; } a:after { -webkit-transition: all 350ms ease-in-out; -moz-transition: all 350ms ease-in-out; -o-transition: all 350ms ease-in-out; transition: all 350ms ease-in-out; } a:hover:before { opacity: 0.6; } a:hover:after { opacity: 1; -webkit-transform: scale(1) translateY(-50%); -ms-transform: scale(1) translateY(-50%); transform: scale(1) translateY(-50%); }
А вот дополнительные стили, которые позволят поворачивать текст во время анимации:
a:after { -webkit-transform: scale(0) rotate(-360deg) translateY(-50%); -ms-transform: scale(0) rotate(-360deg) translateY(-50%); transform: scale(0) rotate(-360deg) translateY(-50%); } a:hover:after { -webkit-transform: scale(1) rotate(0deg) translateY(-50%); -ms-transform: scale(1) rotate(0deg) translateY(-50%); transform: scale(1) rotate(0deg) translateY(-50%); }
Демо-пример