Как сверстать карточку товара для интернет-магазина
Карточка товара - это основной элемент интерфейса интернет-магазина, который отображает ключевую информацию о продукте. В этой статье мы создадим адаптивную карточку, которая будет корректно отображаться на разных устройствах. Карточка будет включать изображение товара, название, цену, краткое описание и кнопку для добавления в корзину.
HTML структура
Создадим базовую разметку карточки товара:
<div class="product-card">
<img src="product-image.jpg" alt="Product Image" class="product-image">
<div class="product-info">
<h3 class="product-title">Название товара</h3>
<p class="product-description">Краткое описание товара.</p>
<div class="product-price">₽999</div>
<button class="add-to-cart">Добавить в корзину</button>
</div>
</div>
Базовые стили
Добавим основные CSS стили для карточки товара:
.product-card {
border: 1px solid #ddd;
border-radius: 8px;
overflow: hidden;
max-width: 300px;
margin: 10px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
transition: transform 0.3s;
}
.product-card:hover {
transform: translateY(-5px);
}
.product-image {
width: 100%;
height: 200px;
object-fit: contain;
}
.product-info {
padding: 15px;
}
.product-title {
margin: 0 0 10px 0;
font-size: 18px;
}
.product-description {
margin: 0 0 10px 0;
color: #666;
font-size: 14px;
}
.product-price {
font-weight: bold;
font-size: 20px;
margin: 0 0 15px 0;
}
.add-to-cart {
background-color: #007bff;
color: white;
border: none;
padding: 10px 15px;
border-radius: 4px;
cursor: pointer;
width: 100%;
font-size: 16px;
}
.add-to-cart:hover {
background-color: #0056b3;
}
Адаптивность
Сделаем карточку адаптивной, чтобы она корректно отображалась на мобильных устройствах. Для этого используем медиа-запросы:
@media (max-width: 768px) {
.product-card {
max-width: 100%;
margin: 10px 0;
}
.product-image {
height: 150px;
}
}
Дополнительные улучшения
Добавим стили для отображения скидки на товар:
.discount-badge {
position: absolute;
top: 10px;
right: 10px;
background-color: #ff5722;
color: white;
padding: 5px 10px;
border-radius: 4px;
font-size: 14px;
}
.original-price {
text-decoration: line-through;
color: #999;
font-size: 16px;
margin-right: 5px;
}
Обновим HTML для отображения скидки:
<div class="product-card">
<div class="discount-badge">-20%</div>
<img src="product-image.jpg" alt="Product Image" class="product-image">
<div class="product-info">
<h3 class="product-title">Название товара</h3>
<p class="product-description">Краткое описание товара.</p>
<div class="product-price">
<span class="original-price">₽1249</span>
<span class="discounted-price">₽999</span>
</div>
<button class="add-to-cart">Добавить в корзину</button>
</div>
</div>
Итоговый код
Вот полный код адаптивной карточки товара:
<div class="product-card">
<div class="discount-badge">-20%</div>
<img src="product-image.jpg" alt="Product Image" class="product-image">
<div class="product-info">
<h3 class="product-title">Название товара</h3>
<p class="product-description">Краткое описание товара.</p>
<div class="product-price">
<span class="original-price">₽1249</span>
<span class="discounted-price">₽999</span>
</div>
<button class="add-to-cart">Добавить в корзину</button>
</div>
</div>
.product-card {
border: 1px solid #ddd;
border-radius: 8px;
overflow: hidden;
max-width: 300px;
margin: 10px;
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
transition: transform 0.3s;
position: relative;
}
.product-card:hover {
transform: translateY(-5px);
}
.product-image {
width: 100%;
height: 200px;
object-fit: contain;
}
.product-info {
padding: 15px;
}
.product-title {
margin: 0 0 10px 0;
font-size: 18px;
}
.product-description {
margin: 0 0 10px 0;
color: #666;
font-size: 14px;
}
.product-price {
font-weight: bold;
font-size: 20px;
margin: 0 0 15px 0;
}
.add-to-cart {
background-color: #007bff;
color: white;
border: none;
padding: 10px 15px;
border-radius: 4px;
cursor: pointer;
width: 100%;
font-size: 16px;
}
.add-to-cart:hover {
background-color: #0056b3;
}
.discount-badge {
position: absolute;
top: 10px;
right: 10px;
background-color: #ff5722;
color: white;
padding: 5px 10px;
border-radius: 4px;
font-size: 14px;
}
.original-price {
text-decoration: line-through;
color: #999;
font-size: 16px;
margin-right: 5px;
}
@media (max-width: 768px) {
.product-card {
max-width: 100%;
margin: 10px 0;
}
.product-image {
height: 150px;
}
}
: