成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

圣杯布局和雙飛翼布局,你更喜歡那個布局?

開發 前端
有人說“雙飛翼布局是玉伯大大提出來的,始于淘寶UED”,其效果和圣杯布局一樣,只是它把三欄布局比作一只鳥,中間內容部分分為三部分,左翅膀、中間、右翅膀。

作用

首先要解釋一下:無論是圣杯布局還是雙飛翼布局,都是為了實現一個效果:左右固定寬度,中間部分自適應。兩者的區別在于,圣杯布局給中間的 div 設置 padding-left 和 padding-right;而雙飛翼布局則在中間的 div 內部創建子 div 放置內容,并在該 div 里用 margin-left 和 margin-right 留出左右寬度。

圣杯布局

HTML 結構如此:

<body>
<header>組成頭部</header>
<section class="container">
<div class="middle">中間部分自適應</div>
<div class="left">左邊欄固定寬度</div>
<div class="right">右邊欄不顧寬度</div>
</section>
<footer>組成尾部</footer>
</body>

CSS 樣式如此:

 body {
min-width: 700px;
}

header,
footer {
background: grey;
border: 1px solid #333;
text-align: center;
}

.left,
.middle,
.right {
position: relative;
float: left;
min-height: 130px;
}

.container {
padding: 0 220px 0 200px;
overflow: hidden;
}

.middle {
width: 100%;
background: red;
}

.left {
margin-left: -100%;
left: -200px;
width: 200px;
background: green;
}

.right {
margin-left: -220px;
right: -220px;
width: 220px;
background: blue
}

footer {
clear: both;
}

效果如此:

圣杯布局

代碼說明:

  • 首先在容器 container 中給予 padding:0 220px 0 200px ,這一步是為了給兩邊固定寬預留位置。
  • 中間(middle)元素設置 width: 100%,它自然就自適應了。
  • 設置左邊(left)元素 position: relative, left: -200px。這樣做是讓它做到左邊的固定位置,做到此時,效果如下 。 圣杯布局接著用margin-left: -100%,讓其回到與中間部分一樣高的位置,這就是圣杯布局的關鍵margin-left:-100% 。 表示向左移動整個屏幕的距離因為三個元素都加了浮動,所以配合 margin-left: -100% 左邊容器就能與中間部分同高。
  • 同理,設置右邊(right)元素position: relative, right:-220px, margin-left: -220px 注意,這里的 margin-left 是 220px。為什么這個是220px,和它自身寬度一致注意 ,自身 margin-left 為負時,就往左移動,等它等于自身高度時就“升格”到上一層,當它等于 -100% 時,這個 100% 表示的是中間部分的寬度,所以就固定在左邊了。

雙飛翼布局

有人說“雙飛翼布局是玉伯大大提出來的,始于淘寶UED”,其效果和圣杯布局一樣,只是它把三欄布局比作一只鳥,中間內容部分分為三部分,左翅膀、中間、右翅膀。其技術關鍵在于它還有一層 div。

HTML 結構如此:

<body>
<header>組成頭部</header>
<section class="container">
<div class="main">
<div class="middle">中間部分自適</div>
<div class="left">左邊欄固定寬度</div>
<div class="right">右邊欄固定寬度</div>
</div>
</section>
<footer>組成尾部</footer>
</body>

CSS 結構如此:

body {
min-width: 700px;
}

header,
footer {
background: grey;
border: 1px solid #333;
text-align: center;
}

.left,
.right,
.main {
float: left;
min-height: 130px;
}


.main {
width: 100%;
background: red;
}

.main-inner {
margin: 0 220px 0 200px;
min-height: 130px;
}

.left {
margin-left: -100%;
width: 200px;
background: green;
}

.right {
margin-left: -220px;
width: 220px;
background: blue
}

footer {
clear: both;
}

效果如圣杯布局一致,不重復展示,它代碼的關鍵在于先構建中間部分展示出,再通過 margin-left 完成浮動流。

思考:為什么會考三欄布局?

以前的布局難點就是三欄布局,而且三欄布局還能引出 BFC,BFC 的作用之一就是自適應布局。而現在 flex: 1就能解決自適應布局的問題,所以這類考題已經不多見了。

總結

以前一直擔心考這類破問題,因為完全沒準備過。除了一次考左邊固定寬,右邊自適應外,就沒考過 CSS 布局方面的問題,大概是因為已經過時了。

三欄布局兩種解決方法:

  • 圣杯布局 浮動 + margin-left + 自身相對定位。
  • 雙飛翼布局 浮動 + margin-left + 中間部分再包裹一層。

相同點:浮動 、margin-left

  • margin-left: -100% :左邊上升。
  • margin-left: -220px:右邊上升。

線上demo:

  • 圣杯布局。
  • 雙飛翼布局。

參考資料

  • CSS 布局,float+margin負值實現圣杯布局
  • CSS布局 -- 圣杯布局 & 雙飛翼布局
責任編輯:武曉燕 來源: 前端山頭人
相關推薦

2021-12-02 09:04:05

布局問題文字對齊圖片設計

2010-08-27 10:59:11

DIVTable

2019-04-03 13:00:27

CSSBFC前端

2010-09-14 08:53:06

DIVTable

2023-02-07 09:01:22

CSS

2025-04-08 05:55:00

CSS布局Grid

2022-04-15 14:57:57

Flex布局鴻蒙操作系統

2010-08-16 09:32:01

DivCSS

2023-01-31 08:02:18

2014-07-29 15:23:06

Android

2010-08-23 15:22:56

CSSfloat

2023-10-30 09:18:28

CSSColumns布局

2019-03-15 09:33:07

RSA信息安全網絡安全

2022-10-13 09:01:24

GridCSS二維布局

2015-07-31 14:11:01

內滾動布局

2017-11-03 07:44:54

混合云GoogleNutanix

2010-09-01 11:34:33

CSS布局

2010-08-06 15:20:25

Flex Builde

2021-01-31 08:00:48

Windows 10Windows操作系統

2020-12-17 08:39:36

Css前端html
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美综合一区 | 精品国产欧美日韩不卡在线观看 | 成人在线视频免费看 | 欧美一区二区三区在线看 | 水蜜桃久久夜色精品一区 | av中文字幕在线播放 | 日韩a| 免费黄色网址视频 | 成人网在线观看 | 亚洲精品短视频 | 日本天天操 | 99国内精品久久久久久久 | 99热国产精品 | 激情六月丁香 | 精品亚洲永久免费精品 | 精品国产欧美日韩不卡在线观看 | 午夜视频免费在线观看 | 国产午夜久久 | 久久久久久国产 | 久久精品国产一区二区电影 | 免费久久99精品国产婷婷六月 | a级免费黄色片 | 一区二区三区四区av | 久久久妇女国产精品影视 | 国产成人精品久久二区二区91 | 国产小视频在线看 | 亚洲综合婷婷 | 免费观看成人性生生活片 | 日韩在线不卡视频 | 久久综合久久自在自线精品自 | 秋霞精品 | 亚洲天堂一区二区 | 免费在线观看成年人视频 | 久久久久久久国产 | 日韩一区二区av | 国产人成精品一区二区三 | 欧美日韩午夜精品 | 在线视频一区二区三区 | 噜久寡妇噜噜久久寡妇 | 精品国产99 | 亚洲一区二区视频 |