代碼解釋如下
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<div class="middle">middle</div>
<div class="left">left</div>
<div class="right">right</div>
</body>
</html>
css
html, body {
height: 100%;
margin: 0;
}
body {
padding:0 200px; /* 設(shè)置padding用于框住middle, 讓左右有空間占位 */
}
.middle {
background: grey;
width: 100%; /* 撐滿父元素 */
height: 100px;
float: left; /* 浮動 */
}
.left {
width: 200px;
background: pink;
height: 100px;
float: left; /* 浮動 */
left: -200px; /* 用于再往左邊移動自身寬度來不遮住middle */
position: relative; /* 相對定位才可以left */
margin-left: -100%; /* 負(fù)margin就是-100%相當(dāng)于往左邊移動100%父元素的寬度,就會移動到上一行中的開頭 */
}
.right {
float: left;
width: 200px;
background: lightseagreen;
height: 100px;
position: relative;
margin-left: -200px; /* 移動自身寬度可以到上一行*/
right: -200px; /*由于有padding的存在所以再移動一個偏移自身的距離*/
}
效果如下
image.png
寬度變小BUG
怎么解決呢,看下一篇雙飛翼布局,把middle包裹一個div就可以了
image.png