圣杯布局和双飞翼布局
圣杯布局及双飞翼布局主要用于解决左右两边盒子固定宽度。中间盒子宽度自适应的问题。
圣杯布局:
<!doctype html>
<html>
<head>
<title>圣杯布局</title>
<meta charset="utf-8">
<style>
body {
min-width: 800px;
margin: 0;
padding: 0;
}
.container {
padding: 0 300px 0 200px;
overflow: hidden;
}
.header {
width: 100%;
height: 100px;
background-color: lightblue;
}
.footer {
width: 100%;
height: 50px;
background-color: lightblue;
}
.middle, .left, .right{
position: relative;
}
.middle {
float: left;
width: 100%;
height: 100px;
text-align: center;
background: lightcoral;
}
.left {
float: left;
width: 200px;
margin-left: -100%;
left:-200px;
height: 100px;
background: lightgreen;
}
.right {
float: left;
width: 300px;
height: 100px;
margin-left: -300px;
right: -300px;
background: lightseagreen;
}
</style>
</head>
<body>
<div class="header">header</div>
<div class="container">
<div class="middle">middle</div>
<div class="left">left</div>
<div class="right">right</div>
</div>
<div class="footer">footer</div>
</body>
</html>
双飞翼布局:
<!doctype html>
<html>
<head>
<title>双飞翼布局</title>
<meta charset="utf-8">
<style>
body {
min-width: 800px;
margin: 0;
padding: 0;
}
.container {
width:100%;
height:100px;
background-color: red;
float: left;
}
.header {
width: 100%;
height: 100px;
background-color: lightblue;
}
.footer {
width: 100%;
height: 50px;
clear: both;
background-color: lightblue;
}
.middle {
margin: 0 300px 0 200px;
}
.left {
float: left;
width: 200px;
margin-left: -100%;
height: 100px;
background: lightgreen;
}
.right {
float: left;
width: 300px;
height: 100px;
margin-left: -300px;
background: lightseagreen;
}
</style>
</head>
<body>
<div class="header">header</div>
<div class="container">
<div class="middle">middle <div>hahah</div></div>
</div>
<div class="left">left</div>
<div class="right">right</div>
<div class="footer">footer</div>
</body>
</html>
另外用弹性盒模型可以很容易的构造三列布局
<html>
<head>
<meta charset="utf-8">
<style>
body{
margin: 0;
}
.container{
display: flex;
height: 100px;
}
.middle{
width: 100%;
background: lightblue;
}
.left,.right{
background: lightcoral;
width: 200px;
}
</style>
</head>
<body>
<div class="container">
<div class="left">left</div>
<div class="middle">middle</div>
<div class="right">right</div>
</div>
</body>
</html>
想做一定有方法,不想做一定有理由。