我就是要用我就是要用CSS实现九宫格图实现九宫格图
本文介绍的就是我们最熟悉的老朋友,CSS。不讲枯燥的语法,抛开js,让我们一起来看业务中那别致的纯CSS实现,让我们一起
来追求那更好的页面实现,希望我带着你走完这段旅程后,你能收获一些惊喜甚至灵感,感兴趣的小伙伴们可以参考一下
下图是手Q吃喝玩乐 好友去哪儿九宫格图的图示:
从上图我们可以分析出如下需求:
图片大小自适应;图片大小自适应;
图片个数不同时,图片按照指定方式排列;图片个数不同时,图片按照指定方式排列;
图片相邻处有图片相邻处有1px空白间隙。空白间隙。
我们以最复杂的6图布局为例,一步一步来看如何以纯CSS实现。
1、、float布局布局
最容易想到的,也是最简单的方案,就是 float 布局:
图片大小自适应:图片大小自适应:宽度百分比,高度使用 padding-top 百分比
图片个数不同时,图片按照指定方式排列:图片个数不同时,图片按照指定方式排列:使用 nth-child 伪类指定不同情况下的元素大小
图片相邻处有图片相邻处有1px空白间隙:空白间隙:使用 border-box + border模拟边框
这里父元素的高度未知,height使用百分比行不通,而padding的百分比值是依据父元素的宽度来计算的,我们可以使用padding-top撑开高度。
让我们一瞅伪码:
XHTML
XML/HTML Code复制内容到剪贴板
1. <div class="float">
2. <div class="item">1</div>
3. ...
4. <div class="item">6</div>
5. </div>
CSS
CSS Code复制内容到剪贴板
1. .float {
2. overflow: hidden;
3. }
4. .item {
5. float: left;
6. padding-top: 33.3%;
7. width: 33.3%;
8. border-right: 1px solid #fff;
9. border-top: 1px solid #fff;
10. }
11. .item:nth-child(1) {
12. padding-top: 66.6%;
13. width: 66.6%;