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

Демо-пример

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.