列表响应式布局--三种CSS方案
最近需要做一些带图片的布局,适用于桌面及移动端。参考了一些网站的实践方案,在此做个总结。
整体思路:
- 每张图片高宽一致,居中对齐
- 根据设备宽度不同,自动换行
总结下来,便有了三种方案。
简单写下三种布局的实现:
1.流式布局—— Float
流式布局是最为常见的一种方案,但很多时候也不太愿意使用,因为浮动的样式会造成内部内容高宽的不可控,在此参考了dribble的方案,利用:after
额外添加内容,并清除浮动,保证高度的可控。
2.内联布局—— Inline-block
内联方式会有一个缺点,就是每个item间会默认留一个空格的间距,即最终的间距=外边距+1个空格。
3.CSS3新特性—— Flexbox
Flexbox为CSS3标准的新特性,它的加入也让页面的布局更丰富和灵活。其功能较多,在此不做详细介绍,详情可查看 CSS-Tricks 讲解。
最终效果见下方:
See the Pen Responsive List Layout (Flexbox vs Float vs Inline-Block) by Hector Guo (@hectorguo) on CodePen.
最后列个表,方便对比。
适用场景 | 兼容性 | 参考网站 | |
---|---|---|---|
Float | 常规实现,适用于列表item较多,强调整体对齐 | 适用所有 | dribble |
Inline-block | 对各个item间宽度精度要求不高,item较少 | IE8+ | |
Flexbox | 对移动端有针对性设计,强调居中对齐 | IE10+(IE10需加前缀-ms-) | CSS-tricks |