圣杯布局和双飞翼布局都是三栏布局,左右盒子宽度固定,中间盒子自适应(固比固),区别是他们的实现的思想。 圣杯布局:
<div id="container">
<div id="center" class="column">#center</div>
<div id="left" class="column">#left</div>
<div id="right" class="column">#right</div>
</div>
<div id="footer">#footer</div>
// style
body {
min-width: 600px;
}
#container {
padding-left: 200px;
padding-right: 200px;
}
#container .column {
height: 200px;
position: relative;
float: left;
}
#center {
width: 100%;
}
#left {
width: 200px;
right: 200px;
margin-left: -100%;
}
#right {
width: 200px;
margin-right: -200px;
}
#footer {
clear: both;
}
/*** IE6 Fix ***/
* html #left {
left: 200px;
}
圣杯布局的思想是:给内容区设置左右 padding 防止遮挡,将中间的三栏全部 float left,通过 margin 负间距把左右内容区移到上方,再通过 relative + left 和right 的设置,将左右内容区移动到目标位置。
双飞翼布局:
<div id="hd">header</div>
<div id="middle">
<div id="inside">middle</div>
</div>
<div id="left">left</div>
<div id="right">right</div>
<div id="footer">footer</div>
</body>
<style>
#hd{
height:50px;
}
#middle{
float:left;
width:100%;/*左栏上去到第一行*/
height:100px;
}
#left{
float:left;
width:180px;
height:100px;
margin-left:-100%;
}
#right{
float:left;
width:200px;
height:100px;
margin-left:-200px;
}
/*给内部div添加margin,把内容放到中间栏,其实整个背景还是100%*/
#inside{
margin:0 200px 0 180px;
height:100px;
}
#footer{
clear:both; /*记得清楚浮动*/
height:50px;
}
</style>
双飞翼布局:给middle创建子div放置内容,再通过子div设置margin-left right 为左右两栏留出位置,其余与圣杯布局思路一致。
现在也可以使用 flex-box 轻松实现。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。