如何用HTML/CSS实现带标题的不规则多图响应式布局?
用CSS Grid实现响应式带标题图片布局
完全可以用CSS Grid实现你要的这种不规则图片布局,相比float方案,Grid能更直观地控制元素位置和跨度,还能轻松实现响应式效果。
实现思路
- 把每个带标题的图片做成独立容器,包含图片和标题文本
- 用Grid的自动适配列宽实现响应式,结合
grid-row/grid-column控制部分容器的跨行列展示,匹配示例的不规则效果 - 给容器添加基础样式,保证图片自适应、标题排版合理
代码示例
HTML结构
<div class="image-grid"> <div class="image-item"> <img src="你的图片地址" alt="图片描述"> <p class="image-title">标题1</p> </div> <div class="image-item image-item--tall"> <img src="你的图片地址" alt="图片描述"> <p class="image-title">标题2(高图)</p> </div> <div class="image-item"> <img src="你的图片地址" alt="图片描述"> <p class="image-title">标题3</p> </div> <div class="image-item image-item--wide"> <img src="你的图片地址" alt="图片描述"> <p class="image-title">标题4(宽图)</p> </div> <div class="image-item"> <img src="你的图片地址" alt="图片描述"> <p class="image-title">标题5</p> </div> </div>
CSS样式
.image-grid { display: grid; /* 响应式列:最小250px,自动填充剩余空间 */ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.5rem; /* 容器间间距 */ padding: 1rem; max-width: 1200px; margin: 0 auto; } .image-item { display: flex; flex-direction: column; border-radius: 8px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.1); } .image-item img { width: 100%; height: 200px; /* 基础高度 */ object-fit: cover; /* 保持图片比例,裁剪多余部分 */ } .image-title { padding: 1rem; margin: 0; background-color: #fff; font-size: 0.9rem; font-weight: 500; } /* 控制部分容器的跨行列,匹配不规则布局 */ .image-item--tall { grid-row: span 2; /* 占2行高度 */ } .image-item--tall img { height: 420px; /* 对应2行的高度,减去标题和间距 */ } .image-item--wide { grid-column: span 2; /* 占2列宽度 */ } /* 小屏幕下取消跨列,保证布局紧凑 */ @media (max-width: 600px) { .image-item--wide { grid-column: span 1; } }
关键说明
repeat(auto-fit, minmax(250px, 1fr)):实现响应式列数,屏幕足够宽时自动增加列,窄屏幕自动减少,保证每个容器最小宽度250pxgrid-row/grid-column:通过给特定容器添加类,控制其占据的行列数,轻松实现示例中的不规则排列object-fit: cover:保证图片在容器内按比例展示,不会拉伸变形- 媒体查询:在小屏幕下取消宽容器的跨列,避免布局过于拥挤
内容的提问来源于stack exchange,提问作者gorg
相关产品推荐
相关产品推荐

