<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>圣杯布局</title>
</head>
<style>
* {
margin: 0;
padding: 0;
}
.container {
padding-left: 200px;
padding-right: 150px;
}
.middle {
width: 100%;
height: 350px;
background-color: palegreen;
text-align: center;
padding-top: 50px;
float: left;
}
.left {
width: 200px;
height: 400px;
background-color: green;
margin-left: -100%;
position: relative;
right: 200px;
text-align: center;
line-height: 400px;
float: left;
}
.right {
width: 150px;
height: 400px;
text-align: center;
line-height: 400px;
background-color: pink;
position: relative;
margin-left: -150px;
right: -150px;
float: left;
}
</style>
<body>
<div class="container">
<div class="middle">
<h4>中间区域</h4>
<p>
圣杯布局要求header和footer各自占领屏幕所有宽度,高度固定 中间的container是一个三栏布局
三栏布局两侧宽度固定不变,中间部分自动填充整个区域 中间部分的高度是三栏中最高的区域的高度
</p>
</div>
<div class="left">左边栏</div>
<div class="right">右边栏</div>
<div style="clear: both"></div>
</div>
<script>
let a = `三个模块浮动布局,清除浮动,按道理都会从左到右排,但是宽度不够,所以会换行,利用margin-三个模块浮动布局,清除浮动,按道理都会从左到右排,但是宽度不够,所以会换行,利用margin-left负值,向左偏移,然后利用相对定位,继续向左偏移达到指定位置;
右侧也是负值,向左偏移,每偏移1%,相当于宽度减少1%,等宽度减为0,就不会换行,此时再利用相对定位进行右偏移。`;
</script>
</body>
</html>