Создаем стильные карточки товаров на HTML и CSS – пошаговое руководство

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Для кого эта статья:

  • Веб-разработчики и дизайнеры, желающие улучшить навыки создания карточек товаров
  • Студенты или начинающие специалисты, интересующиеся веб-разработкой и дизайном
  • Владельцы онлайн-магазинов, стремящиеся повысить конверсию и улучшить пользовательский опыт

    Эффектные карточки товаров — визитная карточка любого онлайн-магазина, которая может увеличить конверсию до 30%. Посредственный дизайн карточек — причина, по которой пользователи покидают сайт в первые 8 секунд. В этом руководстве мы пошагово разберем, как создать стильные и функциональные карточки товаров на чистом HTML и CSS без сложных фреймворков. Вы получите работающие шаблоны, которые легко адаптировать под любой дизайн и интегрировать в существующие проекты. 🛍️

Хотите быстрее освоить не только создание стильных карточек товаров, но и полный стек веб-разработки? Курс «Веб-разработчик» с нуля от Skypro поможет вам за 9 месяцев освоить HTML, CSS, JavaScript и современные фреймворки. Вы научитесь создавать не только красивые интерфейсы, но и полноценные веб-приложения с бэкендом. Выпускники курса увеличивают свой доход в среднем на 45% после обучения. Трудоустройство гарантировано!

Основы создания карточек товаров на HTML и CSS

Карточка товара должна решать три основные задачи: привлекать внимание, предоставлять необходимую информацию о товаре и побуждать к действию. Эффективная карточка товара сочетает в себе функциональность, эстетику и оптимальную производительность.

Прежде чем приступить к коду, необходимо спланировать структуру карточки. Стандартная карточка товара включает следующие элементы:

  • Изображение товара — визуальное представление продукта
  • Заголовок — название товара
  • Описание — краткая информация о товаре
  • Цена — стоимость товара (иногда со скидкой)
  • Кнопка действия — "Купить", "Добавить в корзину", и т.д.

Рассмотрим базовые принципы, которыми следует руководствоваться при разработке карточек товаров:

ПринципОписаниеЗначимость
ЕдинообразиеВсе карточки должны иметь одинаковую структуруВысокая
МинимализмТолько необходимая информация, без перегрузкиВысокая
КонтрастВажные элементы (цена, кнопка) должны выделятьсяСредняя
ИерархияИнформация должна быть организована по значимостиВысокая
ОтзывчивостьКарточка должна корректно отображаться на всех устройствахВысокая

Алексей, ведущий front-end разработчик Когда я только начинал карьеру в веб-разработке, один из моих первых проектов был интернет-магазин спортивного питания. Клиент был недоволен низкой конверсией — посетители заходили на сайт, но редко что-то покупали. Анализ показал, что карточки товаров были перегружены информацией и визуально непривлекательны. Я решил полностью переработать дизайн карточек, сделав их более чистыми и структурированными. Мы выделили ключевую информацию, добавили качественные изображения и яркие кнопки призыва к действию. После редизайна конверсия выросла на 28%, а среднее время пребывания на странице увеличилось на 40%. Этот опыт показал мне, насколько важны хорошо спроектированные карточки товаров для успеха интернет-магазина.

Перед тем как начать кодирование, я рекомендую сделать простой эскиз карточки товара, чтобы понимать, какие элементы будут присутствовать и как они должны располагаться. Это сэкономит время при написании HTML и CSS. 📝

Кинга Идем в IT: пошаговый план для смены профессии

Структура и разметка карточки товара HTML

Хорошая HTML-структура — фундамент качественной карточки товара. Правильная семантическая разметка не только облегчает стилизацию, но и положительно влияет на SEO и доступность вашего сайта.

Рассмотрим базовую структуру HTML для карточки товара:

  • article — семантический тег для обозначения карточки товара
  • figure и img — для изображения товара
  • h3 — для названия товара
  • p — для описания товара
  • div — для блока с ценой и кнопкой
  • button — для кнопки действия

Вот пример базовой разметки карточки товара:

HTML
Скопировать код
<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>

При разработке структуры карточки товара важно следовать методологии БЭМ (Блок, Элемент, Модификатор) или другой системе именования классов. Это обеспечит читаемость и поддерживаемость кода в будущем.

Для более сложных карточек товаров могут потребоваться дополнительные элементы:

  • Бейджи (скидка, новинка, хит продаж)
  • Рейтинг товара (звезды)
  • Варианты (цвет, размер)
  • Счетчик количества
  • Кнопка "Избранное" или "Сравнить"

Расширенная структура для таких карточек может выглядеть следующим образом:

HTML
Скопировать код
<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-правила для карточки товара могут выглядеть так:

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
ЦветаСледуйте цветовой схеме проекта, выделяйте CTAbackground-color, color, border-color
ТениСоздайте ощущение глубины и выделите карточкуbox-shadow, filter

Для стилизации дополнительных элементов (бейджи, кнопки избранного, рейтинг) можно использовать следующие стили:

CSS
Скопировать код
/* Стили для бейджей */
.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 и медиа-запросы:

CSS
Скопировать код
/* Контейнер для карточек товаров */
.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 и разные размеры изображений
  • Проверяйте контрастность — на мобильных устройствах при ярком освещении низкоконтрастный текст трудночитаем
  • Тестируйте на реальных устройствах — эмуляторы не всегда точно отображают поведение элементов

Для улучшения производительности на мобильных устройствах:

CSS
Скопировать код
/* Оптимизация анимаций для мобильных устройств */
@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 – 767px2 карточки в ряд, минималистичныеТолько ключевая информация, упрощенный дизайн
Мобильный (портретная)до 480pxГоризонтальная или 1 в рядТолько название, цена и кнопка, без описания

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

Задумываетесь о профессиональном развитии в сфере веб-разработки? Тест на профориентацию от Skypro поможет вам определить, подходит ли вам карьера в веб-разработке. Он учитывает ваши навыки, интересы и личностные особенности. За 3 минуты вы получите детальный отчет о своих сильных сторонах и рекомендации по развитию карьеры в IT. Пройдите тест сейчас и узнайте, готовы ли вы создавать не только карточки товаров, но и полноценные веб-проекты!

Продвинутые эффекты для карточек с использованием CSS

Продвинутые CSS-эффекты могут значительно повысить привлекательность карточек товаров и выделить ваш интернет-магазин среди конкурентов. Однако важно использовать их умеренно, чтобы не перегружать интерфейс и не замедлять работу сайта. 🚀

Рассмотрим несколько эффектных техник для карточек товаров:

1. Эффект переворачивающейся карточки с дополнительной информацией

CSS
Скопировать код
.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:

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. Градиентные эффекты и нейоморфизм

CSS
Скопировать код
/* Градиентная кнопка */
.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. Параллакс-эффект для изображений

CSS
Скопировать код
.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. Анимированный индикатор наличия или скидки

CSS
Скопировать код
@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. Эффект выделения текста при наведении

CSS
Скопировать код
.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-переменные, что упростит настройку и изменение стилей:

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);
}

Такой подход позволяет легко создавать темные версии дизайна или адаптировать карточки под различные цветовые схемы сайта, изменив лишь значения переменных. 🎭

Создание современных и стильных карточек товаров — это баланс между эстетикой, производительностью и функциональностью. Лучшие карточки товаров не те, что имеют самые яркие эффекты, а те, что эффективно выполняют свою главную задачу — помогают пользователю принять решение о покупке. Помните, что дизайн должен быть невидимым помощником, а не отвлекающим фактором. Постоянно тестируйте свои решения с реальными пользователями, анализируйте метрики и не бойтесь экспериментировать.