Эффекты увеличения и поворота текста, появляющегося поверх изображения, на чистом 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%);
}
Демо-пример
