/* simple utility for footer / demo context */ .demo-note text-align: center; margin-top: 3rem; font-size: 0.75rem; color: #2c3e50; font-weight: 500; background: rgba(255,255,240,0.7); backdrop-filter: blur(4px); display: inline-block; width: auto; padding: 0.5rem 1.2rem; border-radius: 100px; .container-footer display: flex; justify-content: center; margin-top: 2rem; </style> </head> <body>
@media (max-width: 480px) .cards-grid gap: 1.2rem; .product-card max-width: 100%; flex-basis: 100%; .badge font-size: 0.65rem; padding: 0.2rem 0.7rem;
.review-count font-size: 0.7rem; color: #6c7f9e; font-weight: 500; responsive product card html css codepen
<div style="width: 100%;"> <div class="cards-grid"> <!-- Product Card 1 - Classic Sneaker --> <div class="product-card"> <div class="card-media"> <span class="badge hot">🔥 Hot deal</span> <img class="product-img" src="https://images.unsplash.com/photo-1549298916-b41d501d3772?w=500&auto=format" alt="Minimalist sneakers" loading="lazy"> </div> <div class="card-content"> <div class="product-category">Footwear</div> <h3 class="product-title">Urban Court Sneakers</h3> <p class="product-description">Breathable mesh, lightweight cushioning. Perfect for daily wear and urban exploration.</p> <div class="rating"> <div class="stars"> <span class="star-filled">★</span><span class="star-filled">★</span><span class="star-filled">★</span><span class="star-filled">★</span><span class="star-empty">★</span> </div> <span class="review-count">(124 reviews)</span> </div> <div class="price-row"> <span class="current-price">$79.00</span> <span class="old-price">$129.00</span> <span class="discount-badge-text">-38%</span> </div> <button class="btn-add" aria-label="Add to cart">➕ Add to cart</button> </div> </div>
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"> <title>Responsive Product Card | Modern UI Component</title> <!-- Google Fonts & simple CSS reset --> <link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,300;14..32,400;14..32,500;14..32,600;14..32,700&display=swap" rel="stylesheet"> <style> * margin: 0; padding: 0; box-sizing: border-box; /* simple utility for footer / demo context */
.old-price font-size: 0.9rem; font-weight: 500; color: #9aaec9; text-decoration: line-through;
.btn-add:hover background: #1e2f47; transform: scale(0.98); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.05); padding: 0.5rem 1.2rem
/* rating stars (inline flex) */ .rating display: flex; align-items: center; gap: 0.4rem; margin-bottom: 1rem; flex-wrap: wrap;
/* image container - maintains ratio and responsiveness */ .card-media position: relative; background: #f4f7fc; overflow: hidden; aspect-ratio: 1 / 1; /* classic square product image, looks great */ width: 100%;
/* price row */ .price-row display: flex; align-items: baseline; gap: 0.75rem; flex-wrap: wrap; margin-bottom: 1.2rem;