CSS3 Анимация: Красивый эффект при наведении

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

Подготовка к работе

Для работы потребуется текстовый редактор. Создайте папку 3w, внутри неё файлы index.html и папку css с файлом main.css. Оба файла пока пусты.

Создание HTML-разметки

Создадим базовую структуру HTML:

<!DOCTYPE html>
<html>
<head>
  <title>CSS 3D Анимация</title>
  <link rel="stylesheet" href="css/main.css">
</head>
<body>
  <div class="main">
    <img src="img/mobile.png" alt="iPhone">
    <img src="img/mobile.png" alt="iPhone">
    <img src="img/mobile.png" alt="iPhone">
    <img src="img/mobile.png" alt="iPhone">
  </div>
</body>
</html>

Создайте папку img и поместите в неё картинку mobile.png (скриншот экрана iPhone).

Написание CSS-стилей

Перейдём к файлу main.css. Сначала определим стили для контейнера .main:

.main {
  display: flex;
  justify-content: center;
  align-items: center;
  width: 100%;
  height: 100vh; /* 100% высоты экрана */
  margin: 0;
  padding: 0;
  background-color: black;
}

Далее стили для изображения:

.main img {
  width: 750px;
  height: 1334px;
  transform: scale(0.5) rotate(-30deg) perspective(25deg);
  position: absolute;
  width: 100%;
  transition: 0.5s;
}

Добавим анимацию при наведении курсора на последнее изображение:

.main img:last-child:hover {
  transform: translate(160px, -160px) scale(1);
  opacity: 1;
}

Для остальных изображений создадим аналогичные стили, изменяя значения transform и opacity для создания эффекта многослойности:

.main img:nth-last-child(2):hover { /* Третье изображение */
  transform: translate(120px, -120px) scale(0.8);
  opacity: 0.8;
}

.main img:nth-last-child(3):hover { /* Второе изображение */
  transform: translate(80px, -80px) scale(0.6);
  opacity: 0.6;
}

.main img:first-child:hover { /* Первое изображение */
  transform: translate(40px, -40px) scale(0.4);
  opacity: 0.4;
}

Для более выразительного эффекта можно изменить значения translate, scale и opacity. Также можно изменить цвет фона на transparent.

Размещение проекта

Загрузите файлы index.html, main.css и mobile.png на ваш хостинг.

Мы создали красивую 3D-анимацию, используя только CSS3. Код доступен для просмотра и использования.

Что будем искать? Например,программа