今天刷题的时候碰见了一道要求使用双飞翼布局的题。于是便对比了一下圣杯布局得到了点新认识。
我们都知道圣杯布局和双飞翼布局都实现了中间宽度自适应,两边定宽的效果。这样做的优势是重要的东西放在文档流前面可以优先渲染。两者又有什么差别呢?
对比圣杯布局和双飞翼布局
1.二者都主要使用了浮动和负边距来达到中间宽度自适应,两边定宽的目的。
具体来说就是设置左右两边div的margin-left为一负值并设置浮动。于是便会移动到上方的div内(也就是中间的div)与之重叠。
2.相比于圣杯布局双飞翼布局没有用到相对布局(relative),只用到了浮动和负边距。而且在main内层增加了一个div。
DOM结构:
<div class="top">top</div> <div class="bd"> <div class="main"> <div class="inner"> Main </div> </div> <div class="left">Left</div> <div class="right">Right </div> </div> <div class="bottom">bottom</div>
二者对比样式:
<style> body{padding:0;margin:0} .top,.bottom{width:100%; background: red;height:30px;clear:both;} .bd{ /*padding-left:150px;*/ /*padding-right:190px;*/ } .left{ background: blue; width:150px; float:left; margin-left:-100%; /*position: relative;*/ /*left:-150px;*/ } .main{ background: yellow; width:100%; float:left; } .right{ background: gray; width:190px; float:left; margin-left:-190px; /*position:relative;*/ /*right:-190px;*/ } .inner{ margin-left:150px; margin-right:190px; } </style>
3.圣杯布局使用了相对定位,这种布局是有局限性的。双飞燕布局是对圣杯布局的一种改良。
时间: 2024-10-03 13:45:12