回顧複習css頁面佈局
三欄佈局
左右固定中間自適應:
html部分同一如下
<div class=`box1`></div>
<div class="box2"></div>
<div class="box3">
中間自適應
</div>
style方法一:
div {
height: 300px;
}
.box1 {
float: left;
width: 300px;
background: red;
}
.box2 {
float: right;
width: 300px;
background: blue;
}
.box3 {
background: yellow;
}
原理:利用第一和第二個盒子的左右浮動,使得與第三個盒子在一行
缺點:當寬度小於600px時,會繁發生換行;以及中間高度大於300px時,會有兩邊覆蓋(其實中間的div寬度就是width:100%;可以利用overflow: hidden
解決)
style方法二:
div {
height: 300px;
}
.box1 {
width: 300px;
background: red;
position: absolute;
left: 0;
}
.box2 {
position: absolute;
right: 0;
width: 300px;
background: blue;
}
.box3 {
background: yellow;
height: 500px;
position: absolute;
left: 300px;
right: 300px;
}
原理:利用絕對定位,來實現left=300px; right=300px
優點:當中間自適應的高度大於兩邊時不會發生重疊;但是當視窗大小小於600px時,中間會發生重疊,不換行
style方法三:
<style>
.wrap {
display: flex;
}
.box {
height: 300px;
}
.box1 {
width: 300px;
background: red;
}
.box2 {
width: 300px;
background: blue;
}
.box3 {
background: yellow;
height: 500px;
flex: 1;
}
</style>
</head>
<body>
<div class="wrap">
<div class=`box box1`></div>
<div class="box box3">
中間自適應
</div>
<div class="box box2"></div>
</div>
</body>
原理:外部flex佈局;中間利用flex: 1;
即flex-basis: 0
寬度中間取其容器最大
優點:自適應強,寬度小於600時,會縮小兩邊寬度;
缺點:低版本瀏覽器對flex相容性不好;
style方法四:
.wrap {
display: table;
width: 100%;
}
.box {
height: 300px;
display: table-cell;
}
.box1 {
width: 300px;
background: red;
}
.box2 {
width: 300px;
background: blue;
}
.box3 {
background: yellow;
height: 300px;
}
原理:利用table佈局,來達到自使用,外部divwidth:100%
,不然無法填充
優點:自適應強
缺點:中間高度改變會影響兩邊
style方法五:
.wrap {
display: grid;
width: 100%;
grid-template-rows: 100px;
grid-template-columns: 300px auto 300px;
}
.box1 {
background: red;
}
.box2 {
background: yellow;
}
.box3 {
background: blue;
}
原理:利用網格佈局
優點:編寫簡單,自適應較強
兩欄佈局:
同理上面的·方法:
方法一 網格佈局:
.wrap {
display: grid;
grid-template-rows: 100px;
grid-template-columns: 100px auto
}
.box1 {
background: red;
}
.box2 {
background: yellow;
}
.box3 {
background: blue;
/* height: 500px; */
}
方法二table佈局
.wrap {
display: table;
width: 100%;
}
.box {
display: table-cell
}
.box1 {
width: 100px;
background: red;
}
.box2 {
background: blue;
}
方法三flex佈局
.wrap {
display: flex;
}
.box1 {
width: 100px;
background: red;
}
.box2 {
background: blue;
flex: 1;
}
方法四絕對定位
.box1 {
width: 300px;
position: absolute;
left: 0;
background: red;
height: 100px;
}
.box2 {
background: blue;
position: absolute;
left: 300px;
right: 0;
}
方法五浮動佈局:
.box1 {
width: 300px;
float: left;
background: red;
height: 100px;
}
.box2 {
background: blue;
/* overflow: hidden; */
}