前言:上班划水偷空了解了一下圣杯布局和双飞翼布局,一听这两个名字,觉得不明觉厉,其实就是三栏布局,左右两边的盒子宽度固定,中间的盒子宽度自适应。以下内容均是总结互联网上别人的文章。觉得有意思就记录一下。。。
圣杯布局,方法一:
<style>
.container{
padding: 0 200px;
}
.middle{
width: 100%;
background: paleturquoise;
height: 200px;
float: left;
text-align: center;
}
.left{
background: palevioletred;
width: 200px;
height: 200px;
float: left;
font-size: 40px;
color: #fff;
margin-left:-100%;
position: relative;
left: -200px;
}
.right{
width: 200px;
height: 200px;
background: purple;
font-size: 40px;
float: left;
color: #fff;
margin-left:-200px;
position: relative;
right: -200px;
}
</style>
</head>
<body>
<div class="container">
<!-- 中间栏放在前面优先渲染 -->
<div class="middle">好好挂机吧更好的规划规范过的很好的借口你好好火狐u湖库及高度和</div>
<div class="left">left</div>
<div class="right">right</div>
</div>
</body>
不使用定位,在中间盒子控制padding(以下代码仅仅包含样式代码)
.container{
/* padding: 0 200px; */
}
.middle{
width: 100%;
background: paleturquoise;
height: 200px;
float: left;
text-align: center;
box-sizing: border-box;
padding: 0 200px;
}
.left{
background: palevioletred;
width: 200px;
height: 200px;
float: left;
font-size: 40px;
color: #fff;
margin-left:-100%;
/* position: relative;
left: -200px; */
}
.right{
width: 200px;
height: 200px;
background: purple;
font-size: 40px;
float: left;
color: #fff;
margin-left:-200px;
/* position: relative;
right: -200px; */
}
双飞翼布局:(最终效果跟圣杯布局没什么区别)
<style>
* {
box-sizing: border-box;
}
.main-inner {
margin-left:200px;
margin-right: 200px;
}
.content {
overflow: hidden;
}
.content > div {
float: left;
}
.main {
width: 100%;
height:200px;
border:1px solid red;
}
.left {
width:200px;
margin-left: -100%;
height:200px;
border:1px solid #000;
}
.right {
width:200px;
margin-left: -200px;
height:200px;
border:1px solid #000;
}
</style>
</head>
<body>
<div class="content">
<!-- 中间栏放在前面优先渲染 -->
<div class="main">
<div class="main-inner">好好挂机吧更好的规划规(123)范过的很好(误会的话)的借口你好好火狐u湖库及高度和</div>
</div>
<div class="left">left</div>
<div class="right">right</div>
</div>
</body>
Conclusion
上面的布局都少了头部和页脚,但主体的布=布局还是中间的内容栏的布局,而其中比较重要的是三栏显示在同一列的负边距的使用,负边距的百分比都是相对于父元素的宽度来计算的,这点十分重要;负边距的一些用途参考文章负边距详解点击查看