Интересный эффект для изображений на чистом CSS

Вы используете блокировщик рекламы

Пожалуйста, отключите блокировщик рекламы

Подробнее

Встретили недавно интересную анимацию при наведении — Stack Motion Hover Effects, который создает эффект поднятия слоев из стопки. Попробовали сделать и поняли, что реализация не самая лучшая, иногда не отрабатывает вовсе или отрабатывает с багами. И подумали, что можно сделать похожую реализацию на чистом CSS. Собственно, вот она.

HTML разметка такая:


<div class="image-list">
    <div class="image">
      <img src="https://an2-studio.xyz/wp-content/uploads/2018/01/754-450x180.jpg">
      <div class="stack stack-1"></div>
      <div class="stack stack-2"></div>
      <div class="stack stack-3"></div>
      <div class="stack stack-4"></div>
    </div>
    <div class="image">
      <img src="https://an2-studio.xyz/wp-content/uploads/2018/01/r775-450x180.jpg">
      <div class="stack stack-1"></div>
      <div class="stack stack-2"></div>
      <div class="stack stack-3"></div>
      <div class="stack stack-4"></div>
    </div>
</div>

Суть в создании четырех дополнительных блоков, которые будем анимировать (можно заменить псевдоэлементами before и after). Объяснять стили не вижу смысла, все очень просто. Добавляем свойство transition на картинку и вспомогательные блоки и при наведении меняем позиционирование и прозрачность.

.image-list {
    display: flex;
    flex-wrap: wrap;
    margin: 100px auto 0;
    justify-content: space-between;
    width: 940px;
}
.image {
    align-self: flex-start;
    position: relative;
    max-width: 450px;
}
.image-list img {
    position: relative;
    top: 0;
    z-index: 2;
}
.image-list .stack {
    background: #000;
    height: 100%;
    left: 0;
    opacity: 0;
    position: absolute;
    top: 0;
    width: 100%;
}
.image img,
.image .stack {
    transition: all 0.3s ease;
}
.image .stack {
    position:absolute;
}
.image:hover img {
    top: -24px;
    transform: scale(1.05);
}
.image:hover .stack-1 {
    opacity: 0.2;
    top: 0px;
    transform: scale(1.01);
}
.image:hover .stack-2 {
    opacity: 0.4;
    top: -6px;
    transform: scale(1.02);
}
.image:hover .stack-3 {
    opacity: 0.6;
    top: -12px;
    transform: scale(1.03);
}
.image:hover .stack-4 {
    opacity: 0.8;
    top: -18px;
    transform: scale(1.04);
}
Демо Исходники

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Подписывайтесь на наш Telegram канал, чтобы не пропускать наши статьи 😎

Оцените нашу статью
5/52
Комментарии (0)
Добавить комментарий

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