Анимированная карточка для товаров или фотографий на HTML и CSS
781
Время чтения: 13 минут
Карточки — лицо каталога. Статичные блоки — 2020 год. По данным Яндекс.Метрики, анимированные карточки повышают CTR на 76%, а конверсию в просмотр — на 58%. В 2025 году пользователи скроллят 120 км/ч. Нужно движение. Покажем, как сделать карточку с диагональными полосами, которые бегут бесконечно — только CSS. Без JS, адаптивно, с контентом. Полный код, демо, 3 варианта и чек-лист. В отличие от JS-анимаций, CSS не грузит процессор — анимация работает на GPU, что даёт плавное изменение стилей даже на слабых устройствах.

Как работает анимация диагональных полос
Эффект — фон с градиентом. Полосы 15×15px, 45°. Анимация сдвигает background-position на 15px за 5с. Бесконечно. Здесь мы используем @keyframes — это ключевое правило CSS-анимации, которое задаёт ключевые кадры движения. В отличие от CSS transition, который реагирует на изменение состояния (например, hover), CSS animation работает циклически и не требует триггера. Для реактивных эффектов (hover/focus/click) мы добавляем отдельные правила.
linear-gradient(45deg, ...)— создаёт полосыbackground-size: 15px 15px— размер ячейки@keyframes— сдвиг от 0 до 15px- Контент — поверх фона, с тёмным фоном для читаемости
- Производительность:
will-change: background-positionподсказывает браузеру подготовить слой для анимации, что снижает нагрузку на перерисовку
Легко, быстро, 0 JS.
HTML: семантично, с изображением
<div class="striped-card">
<img src="https://www.oweb-solutions.ru/images/site/product-example.jpg" alt="Наушники AirWave Pro" loading="lazy">
<div class="striped-card__content">
<h3>Наушники AirWave Pro</h3>
<p>Беспроводные, 30 ч работы, активное шумоподавление. Hi-Res Audio, Bluetooth 5.3.</p>
<span class="price">14 990 ₽</span>
</div>
</div>
CSS: анимация, адаптив, hover
.striped-card {
position: relative;
width: 320px;
height: 480px;
background: linear-gradient(45deg, #16a34a 10%, transparent 10%, transparent 50%, #16a34a 50%, #16a34a 60%, transparent 60%, transparent 100%);
background-size: 20px 20px;
border: 6px solid #16a34a;
border-radius: 20px;
padding: 24px 16px;
animation: stripe-move 4s linear infinite;
overflow: hidden;
font-family: 'Inter', sans-serif;
transition: transform 0.3s ease, box-shadow 0.3s ease;
cursor: pointer;
will-change: background-position; /* подсказка браузеру для плавной анимации */
}
@keyframes stripe-move {
from { background-position: 0 0; }
to { background-position: 20px 20px; }
}
.striped-card img {
position: absolute;
top: 0; left: 0;
width: 100%;
height: 100%;
object-fit: cover;
object-position: center;
z-index: 0;
border-radius: 14px;
}
.striped-card__content {
position: relative;
z-index: 1;
display: flex;
flex-direction: column;
justify-content: flex-end;
height: 100%;
color: #fff;
text-align: center;
padding: 20px;
row-gap: 16px;
}
.striped-card__content > * {
background: rgba(22, 163, 74, 0.85);
padding: 12px 16px;
border-radius: 12px;
backdrop-filter: blur(4px);
}
.striped-card__content h3 {
margin: 0;
font-size: 22px;
font-weight: 700;
line-height: 1.3;
}
.striped-card__content p {
margin: 0;
font-size: 15px;
line-height: 1.5;
flex-grow: 1;
}
.price {
font-size: 20px;
font-weight: 800;
color: #fff;
}
/* Hover — пример реактивного эффекта */
.striped-card:hover {
transform: translateY(-8px);
box-shadow: 0 16px 40px rgba(22, 163, 74, 0.3);
}
/* Focus — для доступности */
.striped-card:focus-visible {
outline: 3px solid #16a34a;
outline-offset: 4px;
}
/* Адаптив */
@media (max-width: 480px) {
.striped-card {
width: 280px;
height: 420px;
padding: 16px 12px;
}
.striped-card__content { padding: 16px; }
}
3 варианта анимации карточек
| Вариант | Эффект | Для чего |
|---|---|---|
| Диагональные полосы | gradient + @keyframes | Товары, акции |
| Градиент-пульсация | opacity + scale (CSS animation) | Новинки |
| Бегущая рамка | border-image + @keyframes | Портфолио |
Чек-лист: карточка готова
- Анимация плавная (4–5s), использует
@keyframesдля цикличности - Контент читаемый (blur + полупрозрачный фон)
- Реактивные эффекты: hover (подъём + тень), focus-visible для клавиатуры
- Адаптив: 280–320px
- Изображение: object-fit cover
- SEO: alt + цена
- PageSpeed: 0 JS,
will-changeдля производительности
Вы будете получать статьи по нашим направлениям, советы и кейсы предпринимателей
Типичные ошибки при создании анимированных карточек
Даже с простым CSS-эффектом можно сделать карточку, которая отпугнёт пользователя. Вот 4 частые проблемы и их решения.
| Ошибка | Как выглядит | Как исправить |
|---|---|---|
| Слишком быстрая анимация | Полосы мелькают, рябь в глазах | Увеличьте длительность animation-duration до 4–6 секунд. Не ставьте меньше 3s. |
| Контент «тонет» в фоне | Текст сливается с полосами, не читается | Всегда используйте backdrop-filter: blur(4px) и тёмный полупрозрачный фон у контентных блоков, как в примере. |
| Отсутствует hover-эффект | Карточка статична, нет отклика на курсор | Добавьте transform: translateY(-8px) и тень. Это повышает кликабельность на 34% (данные NNG). Реактивные эффекты (hover/focus/click) обязательны для UX. |
| Анимация на мобильных тормозит | Дёрганые полосы, низкий FPS | Используйте will-change: background-position и не ставьте background-size меньше 15px. На слабых устройствах анимация останется плавной. CSS-анимация всегда легче JS — она работает на GPU. |
Проверьте свою карточку по этим пунктам — и она будет работать на всех устройствах без нареканий.
Часто задаваемые вопросы
Можно менять цвета?
Да. Замените #16a34a на ваш бренд.
А для сетки?
Оберните в display: grid; gap: 24px;
Хотите карточки, которые продают? Закажите сайт с анимацией — конверсия, UX, скорость. Если вам нужно полностью переработать структуру, мы предлагаем разработку корпоративного сайта с индивидуальным дизайном, а для быстрого запуска акций и спецпредложений отлично подойдет разработка Landing Page.