1.什么是圣杯布局?
左右盒子固定,中间盒子自适应
2.实现方式
(1)flex布局
思路:左右盒子给固定的宽高,中间盒子flex:1
<!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>Document</title>
</head>
<style>
* {
margin: 0;
padding: 0;
}.box {
display: flex;
width: 100vw;
height: 100vh;
}.one {
width: 20vw;
height: 20vh;
background-color: yellowgreen;
}.two {
flex: 1;
height: 20vh;
background-color: plum;
}.three {
width: 20vw;
height: 20vh;
background-color: pink;
}</style>
<body>
<div class="box">
<div class="one">盒子1</div>
<div class="two">盒子2</div>
<div class="three">盒子3</div>
</div></body>
</html>
(2)浮动
思路:左盒子左浮,右盒子右浮,中间盒子不动,要注意布局顺序,盒子3在盒子2前面
<!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>Document</title>
</head>
<style>
* {
margin: 0;
padding: 0;
}.box {
width: 100vw;
height: 100vh;
}.one {
float: left;
width: 20vw;
height: 20vh;
background-color: yellowgreen;
}.two {
height: 20vh;
background-color: yellow;
}.three {
float: right;
width: 20vw;
height: 20vh;
background-color: pink;
}
</style><body>
<div class="box">
<div class="one">盒子1</div>
<div class="three">盒子3</div>
<div class="two">盒子2</div>
</div></body>
</html>
(3)定位
思路:父级相对定位、左右绝对定位,中间盒子不动
<!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>Document</title>
</head>
<style>
* {
margin: 0;
padding: 0;
}.box {
position: relative;
width: 100vw;
height: 100vh;
}.one {
position: absolute;
top: 0;
left: 0;
width: 20vw;
height: 20vh;
background-color: yellowgreen;
}.two {
height: 20vh;
background-color: plum;
}.three {
position: absolute;
top: 0;
right: 0;
width: 20vw;
height: 20vh;
background-color: pink;
}
</style><body>
<div class="box">
<div class="one">盒子1</div>
<div class="two">盒子2</div>
<div class="three">盒子3</div>
</div>
</body></html>