圣杯布局和双飞翼布局的理解和区别, 并用代码实现
作用:
圣杯布局和双飞翼布局解决的问题都是一样的, 就是两边定宽,中间自适应的三栏布局.中间栏要放在文档流前面有线渲染.
区别:
圣杯布局: 为了中间的内容不被遮挡,将中间的 div 设置了左右padding-left 和 padding-right 后,将左右两个 div 用相对布局position:relative并配合 left 和 right 属性,以便左右两栏 div 移动后不会遮挡住中间的 div.
双飞翼布局: 为了中间内容不被遮挡,直接在中间内部 div 创建子 div用于放置内容,在改 div 使用margin-left 和 margin-right为左右两个 div 留出位置.
/**圣杯布局代码**/
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
</head>
<body>
<div id="hd">
Header
</div>
<div id="bd">
<div id="middle">
middle
</div>
<div id="left">
left
</div>
<div id="right">
right
</div>
</div>
</body>
</html>
<style type="text/css">
#hd{
height: 50px;
background: #666;
text-align: center;
}
#bd{
/*左右栏通过添加负的margin放到正确的位置了,此段代码是为了摆正中间栏的位置*/
padding:0 200px 0 180px;
height:100px;
}
#middle{
float: left;
width: 100%;
height: 100px;
background: blue;
}
#left{
float: left;
width: 180px;
height: 100px;
margin-left: -100%;
background: #0c9;
/*中间栏的位置摆正之后,左栏的位置也相应右移,通过相对定位的left恢复到正确位置*/
position:relative;
left:-180px;
}
#right{
float: left;
width: 200px;
height: 100px;
margin-left: -200px;
background: #0c9;
position: relative;
right: -200px;
}
</style>
/**双飞翼布局**/
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
</head>
<body>
<div id="hd">
header
</div>
<div id="md">
<div id="inside">
middle
</div>
</div>
<div id="left">
left
</div>
<div id="right">
right
</div>
<div id="footer">
</div>
</body>
</html>
<style type="text/css">
#hd{
height: 50px;
background: #666;
text-align: center;
}
#md{
float:left;
width:100%;/*左栏上去到第一行*/
height:100px;
background:blue;
}
#left{
float:left;
width:180px;
height:100px;
margin-left:-100%;
background:#0c9;
}
#right{
float:left;
width:200px;
height:100px;
margin-left:-200px;
background:#0c9;
}
/*给内部div添加margin,把内容放到中间栏,其实整个背景还是100%*/
#inside{
margin:0 200px 0 180px;
height:100px;
}
#footer{
clear:both; /*记得清楚浮动*/
height:50px;
background: #666;
text-align: center;
}
</style>
[注:] 这些题目以及答案都是在网上找的,个人认为解答的比较好的 . 出自 https://github.com/haizlin/fe-interview 特此说明