1、双飞翼布局
双飞翼布局的存在其实主要是因为可以加快主内容的渲染
Title - 锐客网 .main{ float: left; width: 100%; height: 300px; } .main-1{ height: 100%; margin: 0 110px 0 210px; background-color: blueviolet; } .left{ float: left; height: 300px; width: 200px; margin-left: -100%; background-color: cornflowerblue; } .right{ float: left; height: 300px; width: 100px; margin-left: -100px; background-color: #ff0097; }实现两边定宽中间自适应并且优化浏览器渲染主要内容
class="main"> class="main-1">主要内容class="left">左边侧栏 class="right">右边侧栏
文章图片
这样就形成了中间自适应两边定宽布局,并且这样把main-1放结构前面可以使主要内容优先加载。
对于实现原理我说一下个人的见解,首先这个布局是采用了float+margin负边距
三个兄弟元素main,left,right全部使用左浮动,这样保证了可以紧跟着排列。然后main设置了100%宽度width表明了铺满了父元素所以宽度,自然而然的left和right就跳到了第二行,此时利用margin-left属性将left和right固定回去。
对于margin的负值我的理解
margin-left原本是left左边框对于main元素右边框在右侧的距离,然后增加了负值,就是变成了left左边框与main右边框在左侧的距离,而这个margin-left:100%;是相对于父元素的,也就相当于将左边框定位在了最右侧的地方。同理right要想定位在一行上就是margin-left:-自身width;这样就能在上一行右方留出自身宽度的长度。
main-1还需要设置一下margin值以用来留间隔,左右是左右两个侧栏宽度加上边距宽度
2、bfc模式形成的布局
哪些元素会产生BFC?
- 根元素
- float属性不为none
- position为absolute或fixed
- display为inline-block, table-cell, table-caption, flex, inline-flex
- overflow不为visible
Title - 锐客网 .parent{ height: 75px; font-size: 14px; color: #fff8f8; } .left{ float: left; width: 100px; height: 100%; margin-right: 10px; background-color: #e51400; } .center{ height: 100%; overflow: hidden; background-color: #ff0097; } .right{ float: right; width: 100px; height: 100%; margin-left: 10px; background-color: #4eb3b9; } class="parent"> class="left">左侧定宽
class="right"> 右侧定宽
class="center">中间自适应
文章图片
该布局主要实现的原理就是由float进行左右环绕,中间设置overflow:hidden;以防止容器塌陷,float元素经常容易引起塌陷所以很多时候都需要进行清除浮动,这样设置了中间自适应就不会进行环绕会自动对齐。
【前端css布局两边定宽中间自适应】