Создаем стильные карточки товаров на HTML и CSS – пошаговое руководство
Пройдите тест, узнайте какой профессии подходите
Для кого эта статья:
- Веб-разработчики и дизайнеры, желающие улучшить навыки создания карточек товаров
- Студенты или начинающие специалисты, интересующиеся веб-разработкой и дизайном
Владельцы онлайн-магазинов, стремящиеся повысить конверсию и улучшить пользовательский опыт
Эффектные карточки товаров — визитная карточка любого онлайн-магазина, которая может увеличить конверсию до 30%. Посредственный дизайн карточек — причина, по которой пользователи покидают сайт в первые 8 секунд. В этом руководстве мы пошагово разберем, как создать стильные и функциональные карточки товаров на чистом HTML и CSS без сложных фреймворков. Вы получите работающие шаблоны, которые легко адаптировать под любой дизайн и интегрировать в существующие проекты. 🛍️
Хотите быстрее освоить не только создание стильных карточек товаров, но и полный стек веб-разработки? Курс «Веб-разработчик» с нуля от Skypro поможет вам за 9 месяцев освоить HTML, CSS, JavaScript и современные фреймворки. Вы научитесь создавать не только красивые интерфейсы, но и полноценные веб-приложения с бэкендом. Выпускники курса увеличивают свой доход в среднем на 45% после обучения. Трудоустройство гарантировано!
Основы создания карточек товаров на HTML и CSS
Карточка товара должна решать три основные задачи: привлекать внимание, предоставлять необходимую информацию о товаре и побуждать к действию. Эффективная карточка товара сочетает в себе функциональность, эстетику и оптимальную производительность.
Прежде чем приступить к коду, необходимо спланировать структуру карточки. Стандартная карточка товара включает следующие элементы:
- Изображение товара — визуальное представление продукта
- Заголовок — название товара
- Описание — краткая информация о товаре
- Цена — стоимость товара (иногда со скидкой)
- Кнопка действия — "Купить", "Добавить в корзину", и т.д.
Рассмотрим базовые принципы, которыми следует руководствоваться при разработке карточек товаров:
Принцип | Описание | Значимость |
---|---|---|
Единообразие | Все карточки должны иметь одинаковую структуру | Высокая |
Минимализм | Только необходимая информация, без перегрузки | Высокая |
Контраст | Важные элементы (цена, кнопка) должны выделяться | Средняя |
Иерархия | Информация должна быть организована по значимости | Высокая |
Отзывчивость | Карточка должна корректно отображаться на всех устройствах | Высокая |
Алексей, ведущий front-end разработчик Когда я только начинал карьеру в веб-разработке, один из моих первых проектов был интернет-магазин спортивного питания. Клиент был недоволен низкой конверсией — посетители заходили на сайт, но редко что-то покупали. Анализ показал, что карточки товаров были перегружены информацией и визуально непривлекательны. Я решил полностью переработать дизайн карточек, сделав их более чистыми и структурированными. Мы выделили ключевую информацию, добавили качественные изображения и яркие кнопки призыва к действию. После редизайна конверсия выросла на 28%, а среднее время пребывания на странице увеличилось на 40%. Этот опыт показал мне, насколько важны хорошо спроектированные карточки товаров для успеха интернет-магазина.
Перед тем как начать кодирование, я рекомендую сделать простой эскиз карточки товара, чтобы понимать, какие элементы будут присутствовать и как они должны располагаться. Это сэкономит время при написании HTML и CSS. 📝

Структура и разметка карточки товара HTML
Хорошая HTML-структура — фундамент качественной карточки товара. Правильная семантическая разметка не только облегчает стилизацию, но и положительно влияет на SEO и доступность вашего сайта.
Рассмотрим базовую структуру HTML для карточки товара:
- article — семантический тег для обозначения карточки товара
- figure и img — для изображения товара
- h3 — для названия товара
- p — для описания товара
- div — для блока с ценой и кнопкой
- button — для кнопки действия
Вот пример базовой разметки карточки товара:
<article class="product-card">
<figure class="product-card__image">
<img src="product-image.jpg" alt="Название товара">
</figure>
<div class="product-card__content">
<h3 class="product-card__title">Название товара</h3>
<p class="product-card__description">Краткое описание товара, его особенности и преимущества.</p>
<div class="product-card__footer">
<span class="product-card__price">1 299 ₽</span>
<button class="product-card__button">В корзину</button>
</div>
</div>
</article>
При разработке структуры карточки товара важно следовать методологии БЭМ (Блок, Элемент, Модификатор) или другой системе именования классов. Это обеспечит читаемость и поддерживаемость кода в будущем.
Для более сложных карточек товаров могут потребоваться дополнительные элементы:
- Бейджи (скидка, новинка, хит продаж)
- Рейтинг товара (звезды)
- Варианты (цвет, размер)
- Счетчик количества
- Кнопка "Избранное" или "Сравнить"
Расширенная структура для таких карточек может выглядеть следующим образом:
<article class="product-card">
<div class="product-card__badges">
<span class="badge badge--sale">-20%</span>
<span class="badge badge--new">Новинка</span>
</div>
<figure class="product-card__image">
<img src="product-image.jpg" alt="Название товара">
<button class="product-card__favorite" aria-label="Добавить в избранное">
<svg><!-- иконка сердечка --></svg>
</button>
</figure>
<div class="product-card__content">
<h3 class="product-card__title">Название товара</h3>
<div class="product-card__rating">
<!-- Звёзды рейтинга -->
<span class="product-card__rating-count">4.7</span>
</div>
<p class="product-card__description">Краткое описание товара, его особенности.</p>
<div class="product-card__variants">
<div class="color-picker">
<!-- Выбор цвета -->
</div>
<div class="size-picker">
<!-- Выбор размера -->
</div>
</div>
<div class="product-card__footer">
<div class="product-card__price-block">
<span class="product-card__old-price">1 599 ₽</span>
<span class="product-card__price">1 299 ₽</span>
</div>
<button class="product-card__button">В корзину</button>
</div>
</div>
</article>
При разработке структуры учитывайте также принципы доступности. Используйте атрибуты aria, alt для изображений и логичные табиндексы для элементов, требующих взаимодействия. 🧩
Стилизация карточек товаров с помощью CSS
После создания HTML-структуры приступаем к стилизации карточки товара с помощью CSS. Хорошая стилизация не только делает карточку визуально привлекательной, но и улучшает пользовательский опыт.
Базовые CSS-правила для карточки товара могут выглядеть так:
/* Общие стили для карточек */
.product-card {
width: 300px;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
transition: transform 0.3s ease, box-shadow 0.3s ease;
background-color: #ffffff;
}
.product-card:hover {
transform: translateY(-5px);
box-shadow: 0 8px 16px rgba(0, 0, 0, 0.15);
}
/* Стили для изображения */
.product-card__image {
position: relative;
margin: 0;
height: 200px;
overflow: hidden;
}
.product-card__image img {
width: 100%;
height: 100%;
object-fit: cover;
transition: transform 0.5s ease;
}
.product-card:hover .product-card__image img {
transform: scale(1.05);
}
/* Стили для контента */
.product-card__content {
padding: 16px;
}
.product-card__title {
margin: 0 0 8px;
font-size: 18px;
font-weight: 600;
color: #333333;
}
.product-card__description {
margin: 0 0 16px;
font-size: 14px;
color: #666666;
line-height: 1.4;
}
/* Стили для футера карточки */
.product-card__footer {
display: flex;
align-items: center;
justify-content: space-between;
margin-top: 16px;
}
.product-card__price {
font-size: 20px;
font-weight: 700;
color: #222222;
}
.product-card__button {
padding: 8px 16px;
border: none;
border-radius: 4px;
background-color: #4CAF50;
color: white;
font-weight: 600;
cursor: pointer;
transition: background-color 0.3s ease;
}
.product-card__button:hover {
background-color: #45a049;
}
При стилизации карточек товаров важно учитывать следующие аспекты:
Аспект | Рекомендации | CSS-свойства |
---|---|---|
Типография | Используйте читаемые шрифты и достаточный контраст | font-family, font-size, color |
Интерактивность | Добавьте анимации для hover-состояний | transition, transform, :hover |
Пространство | Не перегружайте карточку, используйте отступы | padding, margin, gap |
Цвета | Следуйте цветовой схеме проекта, выделяйте CTA | background-color, color, border-color |
Тени | Создайте ощущение глубины и выделите карточку | box-shadow, filter |
Для стилизации дополнительных элементов (бейджи, кнопки избранного, рейтинг) можно использовать следующие стили:
/* Стили для бейджей */
.product-card__badges {
position: absolute;
top: 10px;
left: 10px;
z-index: 2;
display: flex;
flex-direction: column;
gap: 5px;
}
.badge {
padding: 4px 8px;
border-radius: 4px;
font-size: 12px;
font-weight: 700;
color: white;
}
.badge--sale {
background-color: #e53935;
}
.badge--new {
background-color: #1e88e5;
}
/* Стили для кнопки избранного */
.product-card__favorite {
position: absolute;
top: 10px;
right: 10px;
z-index: 2;
width: 36px;
height: 36px;
border: none;
border-radius: 50%;
background-color: white;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
transition: transform 0.2s ease;
}
.product-card__favorite:hover {
transform: scale(1.1);
}
/* Стили для блока с ценой */
.product-card__price-block {
display: flex;
flex-direction: column;
}
.product-card__old-price {
font-size: 14px;
color: #999;
text-decoration: line-through;
}
/* Стили для рейтинга */
.product-card__rating {
display: flex;
align-items: center;
margin-bottom: 8px;
}
.product-card__rating-stars {
display: flex;
color: #ffc107; /* Цвет звёзд */
}
.product-card__rating-count {
margin-left: 5px;
font-size: 14px;
color: #666;
}
Мария, UI/UX дизайнер Работая над интернет-магазином электроники, я столкнулась с проблемой — множество товаров имело схожие характеристики, и пользователям было сложно различать их в каталоге. Решение было найдено в тщательной проработке карточек товаров. Мы ввели цветовое кодирование категорий: смартфоны получили синюю акцентную линию, ноутбуки — зеленую, аудиотехника — оранжевую. Для каждой категории мы выделили 2-3 ключевые характеристики, которые отображались на карточке. Например, для смартфонов это были объем памяти, размер экрана и емкость батареи. Результаты превзошли ожидания — время выбора товара сократилось на 23%, а количество переходов на страницы товаров увеличилось на 15%. Этот опыт показал, что продуманный дизайн карточек товаров может значительно улучшить навигацию и повысить конверсию.
Важно помнить о поддержании баланса между эстетикой и функциональностью. Красивые карточки привлекают внимание, но если они не предоставляют нужную информацию или создают трудности при взаимодействии, пользователи быстро потеряют интерес. 🎨
Адаптивные карточки товаров для разных устройств
От 60% до 70% пользователей просматривают интернет-магазины с мобильных устройств, поэтому адаптивность карточек товаров — обязательное требование современного веб-дизайна. Грамотная адаптация улучшает пользовательский опыт и положительно влияет на SEO.
Для создания адаптивных карточек товаров используем CSS Flexbox, Grid и медиа-запросы:
/* Контейнер для карточек товаров */
.products-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
gap: 20px;
padding: 20px;
}
/* Базовые стили карточки товара */
.product-card {
display: flex;
flex-direction: column;
width: 100%;
/* Остальные стили... */
}
/* Медиа-запросы для различных устройств */
/* Для планшетов */
@media (max-width: 768px) {
.products-grid {
grid-template-columns: repeat(2, 1fr);
}
.product-card__content {
padding: 12px;
}
.product-card__title {
font-size: 16px;
}
.product-card__description {
font-size: 13px;
}
}
/* Для мобильных устройств */
@media (max-width: 480px) {
.products-grid {
grid-template-columns: 1fr;
}
.product-card {
flex-direction: row;
height: 140px;
}
.product-card__image {
width: 40%;
height: 100%;
}
.product-card__content {
width: 60%;
padding: 10px;
display: flex;
flex-direction: column;
}
.product-card__description {
display: none; /* Скрываем описание на мобильных */
}
.product-card__footer {
margin-top: auto;
}
.product-card__price {
font-size: 16px;
}
.product-card__button {
padding: 6px 12px;
font-size: 13px;
}
}
При адаптации карточек товаров под различные устройства следуйте этим рекомендациям:
- Приоритизируйте контент — на маленьких экранах оставляйте только самое важное
- Увеличивайте интерактивные элементы — кнопки должны быть удобны для нажатия пальцем (минимум 44x44px)
- Оптимизируйте изображения — используйте тег picture и разные размеры изображений
- Проверяйте контрастность — на мобильных устройствах при ярком освещении низкоконтрастный текст трудночитаем
- Тестируйте на реальных устройствах — эмуляторы не всегда точно отображают поведение элементов
Для улучшения производительности на мобильных устройствах:
/* Оптимизация анимаций для мобильных устройств */
@media (max-width: 480px) {
.product-card:hover {
transform: none;
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
.product-card:hover .product-card__image img {
transform: none;
}
/* Используем более легкие эффекты для тач-устройств */
.product-card:active {
transform: scale(0.98);
}
}
Разные подходы к отображению карточек на различных устройствах:
Тип устройства | Размер экрана | Структура карточки | Особенности |
---|---|---|---|
Десктоп | 1024px и выше | Вертикальная | Полная информация, анимации, hover-эффекты |
Планшет | 768px – 1023px | Вертикальная, менее крупная | Сокращенное описание, упрощенные анимации |
Мобильный (альбомная) | 481px – 767px | 2 карточки в ряд, минималистичные | Только ключевая информация, упрощенный дизайн |
Мобильный (портретная) | до 480px | Горизонтальная или 1 в ряд | Только название, цена и кнопка, без описания |
Современный подход к адаптивному дизайну карточек товаров предполагает не только изменение размеров, но и полную трансформацию структуры при необходимости. Например, на десктопе карточка может быть вертикальной с изображением сверху, а на мобильных устройствах трансформироваться в горизонтальную с изображением слева. 📱
Задумываетесь о профессиональном развитии в сфере веб-разработки? Тест на профориентацию от Skypro поможет вам определить, подходит ли вам карьера в веб-разработке. Он учитывает ваши навыки, интересы и личностные особенности. За 3 минуты вы получите детальный отчет о своих сильных сторонах и рекомендации по развитию карьеры в IT. Пройдите тест сейчас и узнайте, готовы ли вы создавать не только карточки товаров, но и полноценные веб-проекты!
Продвинутые эффекты для карточек с использованием CSS
Продвинутые CSS-эффекты могут значительно повысить привлекательность карточек товаров и выделить ваш интернет-магазин среди конкурентов. Однако важно использовать их умеренно, чтобы не перегружать интерфейс и не замедлять работу сайта. 🚀
Рассмотрим несколько эффектных техник для карточек товаров:
1. Эффект переворачивающейся карточки с дополнительной информацией
.product-card {
perspective: 1000px;
height: 400px;
}
.product-card__inner {
position: relative;
width: 100%;
height: 100%;
transition: transform 0.8s;
transform-style: preserve-3d;
}
.product-card:hover .product-card__inner {
transform: rotateY(180deg);
}
.product-card__front,
.product-card__back {
position: absolute;
width: 100%;
height: 100%;
backface-visibility: hidden;
border-radius: 8px;
overflow: hidden;
}
.product-card__back {
transform: rotateY(180deg);
padding: 20px;
display: flex;
flex-direction: column;
background-color: #f8f8f8;
}
.product-card__back-title {
margin-top: 0;
font-size: 18px;
color: #333;
}
.product-card__features {
margin: 0;
padding-left: 20px;
}
.product-card__features li {
margin-bottom: 8px;
}
Соответствующий HTML:
<div class="product-card">
<div class="product-card__inner">
<div class="product-card__front">
<!-- Стандартное содержимое карточки -->
</div>
<div class="product-card__back">
<h3 class="product-card__back-title">Детали товара</h3>
<ul class="product-card__features">
<li>Характеристика 1</li>
<li>Характеристика 2</li>
<li>Характеристика 3</li>
</ul>
<button class="product-card__button product-card__button--secondary">Подробнее</button>
</div>
</div>
</div>
2. Градиентные эффекты и нейоморфизм
/* Градиентная кнопка */
.product-card__button--gradient {
background: linear-gradient(45deg, #ff5f6d, #ffc371);
border: none;
color: white;
transition: all 0.3s ease;
}
.product-card__button--gradient:hover {
background: linear-gradient(45deg, #ff4b5a, #ffb25c);
box-shadow: 0 5px 15px rgba(255, 95, 109, 0.4);
}
/* Нейоморфизм для карточки */
.product-card--neomorphic {
background: #f0f0f3;
box-shadow: 10px 10px 20px #d1d1d4, -10px -10px 20px #ffffff;
border-radius: 15px;
border: none;
transition: all 0.3s ease;
}
.product-card--neomorphic:hover {
box-shadow: 15px 15px 25px #d1d1d4, -15px -15px 25px #ffffff;
}
/* Нейоморфическая кнопка */
.product-card__button--neomorphic {
background: #f0f0f3;
box-shadow: 5px 5px 10px #d1d1d4, -5px -5px 10px #ffffff;
color: #666;
border: none;
}
.product-card__button--neomorphic:active {
box-shadow: inset 5px 5px 10px #d1d1d4, inset -5px -5px 10px #ffffff;
}
3. Параллакс-эффект для изображений
.product-card__image {
position: relative;
height: 250px;
overflow: hidden;
}
.product-card__image img {
width: 100%;
height: 120%;
object-fit: cover;
transform: translateY(0);
transition: transform 0.5s ease-out;
}
.product-card:hover .product-card__image img {
transform: translateY(-10%);
}
4. Анимированный индикатор наличия или скидки
@keyframes pulse {
0% { transform: scale(1); }
50% { transform: scale(1.05); }
100% { transform: scale(1); }
}
.badge--hot-deal {
background-color: #ff4757;
animation: pulse 1.5s infinite;
}
5. Эффект выделения текста при наведении
.product-card__title {
position: relative;
display: inline-block;
}
.product-card__title::after {
content: '';
position: absolute;
bottom: 0;
left: 0;
width: 0;
height: 2px;
background-color: #4CAF50;
transition: width 0.3s ease;
}
.product-card:hover .product-card__title::after {
width: 100%;
}
При использовании продвинутых эффектов учитывайте следующие моменты:
- Производительность: трансформации и opacity анимации более эффективны, чем анимации цвета или размера
- Доступность: убедитесь, что эффекты не мешают восприятию информации
- Совместимость браузеров: проверяйте работу эффектов в разных браузерах
- Интенсивность: слишком много анимаций может отвлекать и раздражать пользователя
- Целесообразность: эффекты должны улучшать пользовательский опыт, а не существовать ради эффектности
Для продвинутых эффектов можно также использовать CSS-переменные, что упростит настройку и изменение стилей:
:root {
--card-primary-color: #4CAF50;
--card-secondary-color: #f8f8f8;
--card-border-radius: 8px;
--card-transition-time: 0.3s;
}
.product-card {
border-radius: var(--card-border-radius);
transition: transform var(--card-transition-time) ease;
}
.product-card__button {
background-color: var(--card-primary-color);
}
Такой подход позволяет легко создавать темные версии дизайна или адаптировать карточки под различные цветовые схемы сайта, изменив лишь значения переменных. 🎭
Создание современных и стильных карточек товаров — это баланс между эстетикой, производительностью и функциональностью. Лучшие карточки товаров не те, что имеют самые яркие эффекты, а те, что эффективно выполняют свою главную задачу — помогают пользователю принять решение о покупке. Помните, что дизайн должен быть невидимым помощником, а не отвлекающим фактором. Постоянно тестируйте свои решения с реальными пользователями, анализируйте метрики и не бойтесь экспериментировать.