
Интересный эффект для изображений на чистом 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); } |
Подписывайтесь на наш Telegram канал, чтобы не пропускать наши статьи 😎
