多列布局的多种解决方案(一)(定宽或不定宽与自适应的布局)
这里我会先讲两列布局中的定宽与自适应布局,然后再拓展到不定宽与自适应布局,最后再讲一下三列布局,由此衍生到四列五列等多列布局。
先讲解两列布局的多种解决方案。
接着CSS设置parent主容器背景颜色为浅灰色,left背景颜色为黑色,right背景颜色为深灰色:
这时候我们得到的效果图以及我们最终想要的定宽与自适应两列布局的效果图如下:
这种解决方案的缺点就是兼容性较差(IE6/7不支持),但是能够用于不定宽与自适应两列布局,同时CSS需更改为:
这种解决方案的缺点就是IE6/7/8/9不支持,IE10需加-ms-前缀才能使用,兼容性差;好处在于可以用于不定宽与自适应两列布局(只需去掉left中
width: 100px;即可)。
这里采用两列布局的第二种解决方案(float+overflow),我们只需要同时设置left和center就可以:
同样的,去掉
width: 100px;就能得到不定宽+不定宽+自适应的三列布局。
老规矩,现在HTML文档BODY下写入:
接着CSS设置parent主容器背景颜色为浅灰色,left背景颜色为黑色,right背景颜色为深灰色:
这时候我们得到的效果图以及我们最终想要的定宽与自适应两列布局的效果图如下:
原始效果图:
最终效果图:
(两列布局之间边距为10px)
好了,不废话了!
两列布局的第一种解决方案:float+margin
这种解决方案的优点就是:兼容性很好(IE6不兼容,在IE6下right右边布局文字会缩进3px,需要在left样式加上margin-right:-100px);缺点就是只能设置定宽与自适应两列布局,无法拓展至不定宽与自适应两列布局。
解决IE6兼容性问题,需修改下HTML结构:
(即在right容器外再套一个容器right-fix)
同时,CSS需更换为:
也就是说,解决方案优化为:float+margin+(fix),不过这个解决方案还是无法用于不定宽与自适应两列布局。
两列布局的第二种解决方案:float+overflow
这种解决方案的优点就是兼容性很好(除了IE6不支持),而且能够用于不定宽与自适应两列布局(只需把
width: 100px去掉即可变为不定宽与自适应两列布局)。
两列布局的第三种解决方案:table
这种解决方案的缺点就是兼容性较差(IE6/7不支持),但是能够用于不定宽与自适应两列布局,同时CSS需更改为:
两列布局的第四种解决方案:flex
那么如果是三列布局或者四列、五列布局呢,这里举一个例子,例如要进行
定宽+定宽+自适应的三列布局:
首先HTML写入:
CSS背景颜色跟两列布局一样:
这里采用两列布局的第二种解决方案(float+overflow),我们只需要同时设置left和center就可以:
这样就可以得到定宽+定宽+自适应的三列布局,效果图如下:
其他三列、四列布局的解决方案由两列布局的解决方案拓展可以得出,万物归一!