当前位置: 首页 > Web前端 > CSS

CSS布局基础:两列或三列自适应

时间:2023-03-31 13:15:27 CSS

【第一列或两列固定宽度,最后一列占据页面剩余宽度(即自适应宽度)】这篇文章主要是为了解决一个实际问题问题:左右两列布局,左边宽度固定,右边宽度自适应(或者左右三列布局,左右宽度固定,右边宽度自适应)右边宽度是自适应的),当页面宽度发生变化时,如何让右边元素中的内容始终显示在页面剩余宽度的中央。设置text-align:centerontherightelement后,问题其实是如何让右边元素的宽度占据页面剩余的所有宽度。基础知识:元素float后的变化1.本来是inline或者本来是block的元素,在设置float:left或者float:right之后,都会有inline-block元素的特性,即:不占单行,可以设置宽度和高度。2、与position:absolute;的区别在于文档流的分离是float的几个元素在同一个文档流中。3.float半脱离文档流:两个元素的第一个设置为float:left;,对于后面元素的元素,前面的元素脱离文档流,即会占用元素的位置;对于后续元素的内容而言,前一个元素占据文档流,即不会覆盖前一个元素的内容。如图:方法一:float+calc()//htmlleft

I要居中

居中

//css.wrap{width:500px;背景:黄色;溢出:隐藏;}.left{浮动:左;宽度:100px;背景:蓝色;}.right{浮动:左;背景:红色;text-align:center;}如果我们就这么写,效果会像下图:可以看到右边元素的宽度不是页面其余部分的宽度。原因是:右边的float元素之后,具有内联块级元素的特性,即宽度为auto。所以它不能填满剩余的宽度。这不是我们想要的结果,所以我们要自己设置右边元素的宽度:.right{width:calc(100%-100px);}满足我们的要求:方法二:position/float+margin-left//html部分同上//css.wrap{position:relative;宽度:500px;背景:黄色;}.left{位置:绝对;左:0;/*或浮动:左;*/宽度:100px;背景:蓝色;}.right{margin-left:100px;背景:红色;text-align:center;}原理是:左边的元素float:left或者setposition:absolute然后脱离文档流,右边其实还是霸气的占据单个的块级元素(block)线。设置margin-left为左边元素的宽度后,看起来两个元素在同一行,右边元素的宽度自适应:方法三:极其方便flex.content{width:500px;背景:蓝色;显示:flex;}.left{背景:粉色;宽度:100px;}.right{背景:黄色;文本对齐:居中;flex:auto;}参考资料:http://www.imooc.com/video/774/0