快速体验
- 打开 InsCode(快马)平台 https://www.inscode.net
- 输入框内输入如下内容:
开发一个电商商品展示页面,使用DISPLAY:GRID实现自适应网格布局。要求:1) 桌面端每行显示4个商品卡片;2) 平板端每行显示2个;3) 手机端单列显示。每个商品卡片包含图片、标题、价格和'加入购物车'按钮。实现鼠标悬停时卡片放大效果。使用CSS GRID的gap属性控制间距,确保布局整齐美观。提供完整的HTML和CSS代码。- 点击'项目生成'按钮,等待项目生成完整后预览效果
今天想和大家分享一个电商网站商品展示墙的实战案例,正好最近用CSS Grid布局重构了一个项目,效果出乎意料地好。这种布局方式特别适合商品展示这类需要规整排列的场景,而且响应式适配非常简单。
先说说为什么选择DISPLAY:GRID来做这个需求。传统的float或者flex布局虽然也能实现网格效果,但在处理复杂的行列关系时总有些力不从心。而Grid布局就像它的名字一样,真的像网格一样直观可控。
- 基础网格搭建
首先定义了一个商品容器,设置为display: grid。这里的关键是grid-template-columns属性,通过repeat函数可以轻松定义列数和宽度。桌面端我设置了4列,每列宽度为1fr(等分剩余空间),这样就能自动适应不同屏幕尺寸。
- 响应式处理
使用媒体查询实现不同设备上的布局变化特别简单。在平板尺寸下,只需要把列数改为2;手机端则改为单列显示。Grid布局的优势在于,改变列数后所有子元素会自动重新排列,完全不需要调整其他样式。
- 间距控制
Grid的gap属性简直是间距控制的神器。一行代码就能同时设置行列间距,比传统的margin方案简洁多了。我设置了1rem的间距,让商品卡片之间保持舒适的呼吸感。
- 卡片悬停效果
为商品卡片添加了transform: scale(1.05)的悬停动画,配合transition让放大效果更平滑。这里要注意给卡片设置overflow: hidden,防止放大时内容溢出。
- 内容布局
每个商品卡片内部使用了flex布局来排列图片、标题、价格和按钮。这种Grid套Flex的组合在实际项目中非常实用,可以发挥两种布局各自的优势。
实现过程中有几个值得注意的点:
- 图片要设置width: 100%和height: auto,保持宽高比自适应
- 价格和按钮区域建议用margin-top: auto实现底部对齐
- 给卡片添加适当的box-shadow可以增强立体感
- 使用object-fit: cover确保商品图片填充完整
这个方案最大的优点是代码非常简洁。相比传统布局方式,Grid的实现可能要少30%-50%的代码量,而且可读性更好。维护起来也方便,要调整布局只需要修改几处关键属性即可。
最近在InsCode(快马)平台上尝试部署这个项目,发现特别适合前端demo的快速验证。不用配置任何环境,代码写完后直接就能看到效果,还能一键生成在线可访问的地址分享给同事预览。对于需要频繁调整布局的前端工作来说,这种即时反馈的体验真的很提升效率。
快速体验
- 打开 InsCode(快马)平台 https://www.inscode.net
- 输入框内输入如下内容:
开发一个电商商品展示页面,使用DISPLAY:GRID实现自适应网格布局。要求:1) 桌面端每行显示4个商品卡片;2) 平板端每行显示2个;3) 手机端单列显示。每个商品卡片包含图片、标题、价格和'加入购物车'按钮。实现鼠标悬停时卡片放大效果。使用CSS GRID的gap属性控制间距,确保布局整齐美观。提供完整的HTML和CSS代码。- 点击'项目生成'按钮,等待项目生成完整后预览效果