css制作商品列表
商品列表布局
使用Flexbox或Grid布局可以快速实现商品列表的响应式排列。Flexbox适合单行或单列布局,Grid适合多行多列复杂布局。
/* Flexbox方案 */
.product-list {
display: flex;
flex-wrap: wrap;
gap: 20px;
justify-content: space-between;
}
/* Grid方案 */
.product-list {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
gap: 20px;
}
商品卡片样式
商品卡片需要包含图片、标题、价格等核心信息,建议设置统一高度和阴影效果提升视觉层次。
.product-card {
background: white;
border-radius: 8px;
overflow: hidden;
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
transition: transform 0.3s ease;
}
.product-card:hover {
transform: translateY(-5px);
}
.product-image {
width: 100%;
height: 200px;
object-fit: cover;
}
.product-info {
padding: 15px;
}
.product-price {
color: #e63946;
font-weight: bold;
margin-top: 10px;
}
响应式设计
通过媒体查询调整不同屏幕尺寸下的列数和间距,移动端通常显示1-2列,桌面端显示3-4列。
@media (max-width: 768px) {
.product-list {
grid-template-columns: repeat(2, 1fr);
}
}
@media (max-width: 480px) {
.product-list {
grid-template-columns: 1fr;
}
}
交互效果
添加悬停动画和按钮反馈能增强用户体验,注意过渡效果要平滑自然。
.add-to-cart {
background: #457b9d;
color: white;
border: none;
padding: 8px 15px;
border-radius: 4px;
cursor: pointer;
transition: background 0.2s;
}
.add-to-cart:hover {
background: #1d3557;
}
加载状态处理
商品列表加载时需要显示占位符,避免页面内容跳动。

.loading-placeholder {
background: #f1faee;
border-radius: 8px;
animation: pulse 1.5s infinite;
}
@keyframes pulse {
0% { opacity: 0.6; }
50% { opacity: 1; }
100% { opacity: 0.6; }
}






