Часы работы пн-пт 9:00 — 18:00
Адрес г. Тула, ул. Некрасова, 7, оф. 315
Анимированная карточка для товаров или фотографий на HTML и CSS

Анимированная карточка для товаров или фотографий на HTML и CSS

Owebs
4 апреля 2025
Просмотры 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; }
}

Живое демо: наведите и кликните

Наушники

Наушники AirWave Pro

Беспроводные, 30 ч работы, шумоподавление. Hi-Res, Bluetooth 5.3.

14 990 ₽

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.

Ow
Имя:
Комментарий:
6 комментариев
Больше года назад

Подскажите, а если я хочу сделать, чтобы карточка не сразу при наведении менялась, а с небольшой задержкой — это через transition делается или через @keyframes?

Ответить
Посмотреть ответы Скрыть ответы
Имя:
Owebs
Больше года назад

Сергей Петров

Отличный вопрос, Сергей! Для задержки старта анимации при наведении удобнее всего использовать CSS transition со свойством transition-delay. Это позволяет плавно изменять стили без дополнительного кода, в отличие от @keyframes, который запускается сразу. Например, transition: transform 0.3s ease 0.2s; даст задержку в 0.2 секунды перед началом трансформации.

Ответить
Имя:
Больше года назад

А не будет ли таких анимаций сильно грузить сайт? У меня много товаров на странице, боюсь что все тормозить начнет.

Ответить
Посмотреть ответы Скрыть ответы
Имя:
Owebs
Больше года назад

Анна Кузнецова

Анна, с CSS-анимациями можете не переживать — они работают на уровне GPU и практически не нагружают процессор, в отличие от JavaScript-решений. Для десятков карточек на странице производительность останется высокой, особенно если вы используете transform и opacity (это самые «легкие» свойства для анимации). Если бы вы делали аккордеон или слайдер через JS, нагрузка была бы заметно выше.

Ответить
Имя:
Больше года назад

А можно сделать чтоб при клике карточка переворачивалась, как будто показывая обратную сторону с ценой? Или это только hover работает?

Ответить
Посмотреть ответы Скрыть ответы
Имя:
Owebs
Больше года назад

Максим Иванов

Максим, конечно можно! Для клика используйте псевдокласс :focus (или :focus-within для всей карточки) — это реактивный эффект, аналогичный hover. Анимацию переворота реализуйте через CSS transition и свойство transform с rotateY(180deg). Получится плавное изменение стилей при тапе или клике, что идеально для мобильных устройств.

Ответить
Имя:
Развернуть все Скрыть

Популярные

Анимированный индикатор для пунктов меню на сайте
Просмотры 998
Рейтинг 15
8 декабря
7 месяцев назад

Расскажем как написать анимированный индикатор для пунктов меню на сайте. Так портал станет более интерактивным и привлекательным для пользователей.

Как оформить блок акции через CSS в 2025: Зачеркнутая цена + эффектная скидка за 5 минут
Просмотры 1797
Рейтинг 6
14 октября
8 месяцев назад

В данном уроке будем стилизовать текст для объявлений об акции. Необходимо сделать так, чтобы наше объявление привлекло потенциальных покупателей

Создание сайтов через нейросети: плюсы и минусы
Просмотры 1409
Рейтинг 4
9 февраля 2025
Больше года назад

Популярность нейросетей в 2025 году набирает обороты. Нет, они не заменяют полноценных специалистов. Зато существенно упрощают и ускоряют работу тех же копирайтеров, сеошников и дизайнеров.

Сегодня мы расскажем, какие нейросети можно использовать в работе, разберем их функционал и приведем примеры генерации.

Оставьте заявку

Поставив галочку, Вы даете согласие на обработку ваших Персональных данных

Услуги

Разработка интернет-магазина
  • 1C-Битрикс
  • OpenCart
  • WordPress
  • NetCat
Интернет-магазин
  • Полная оптимизация
  • Расширение структуры
  • Модули автоматизации
Интернет-магазин автозапчастей
  • Анализ бизнес-задач и целевой аудитории
  • Разработка технического задания
  • Создание прототипа интернет-магазина
  • Дизайн интерфейса и адаптивная верстка
  • Разработка каталога автозапчастей
  • Интеграция поиска по VIN-коду и параметрам авто
  • Настройка фильтров по категориям и характеристикам
  • Интеграция с системами оплаты и доставки
  • Подключение CRM и систем управления запасами
  • Интеграция с поставщиками автозапчастей
  • Разработка личного кабинета для клиентов
  • Настройка системы скидок и акций
  • Оптимизация сайта для SEO
  • Тестирование функционала и устранение ошибок
  • Обучение персонала работе с интернет-магазином
  • Запуск и поддержка интернет-магазина