精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

CSS Flex 布局和 Grid 布局怎么選?

開發 前端
CSS 中的 Flex 布局?和 Grid 布局都是非常強大的布局方案,那什么情況下應該使用 Grid 布局,什么情況下應該使用 Flex 布局呢?本文就來通過一些示例看看兩者之間的區別以及使用場景!

大家好,我是 CUGGZ。

CSS 中的 Flex 布局?和 Grid 布局都是非常強大的布局方案,那什么情況下應該使用 Grid 布局,什么情況下應該使用 Flex 布局呢?本文就來通過一些示例看看兩者之間的區別以及使用場景!

Grid 和 Flexbox 的區別

Grid 是二維布局模型,它有列和行。而 Flexbox 是一維布局模型,可以將其子項目布局為列或行,但不能同時布局行和列。

/* Flexbox */
.wrapper {
display: flex;
}

/* Grid */
.wrapper {
display: grid;
grid-template-columns: 2fr 1fr;
grid-gap: 16px;
}

圖片

可以看到,Flexbox 正在布局元素的內聯列表(對一行元素進行布局),而 CSS 網格使它們組成列和行的網格。當然,也可以使用 Flexbox 布局對一列元素進行布局:

/* Flexbox */
.wrapper {
display: flex;
flex-direction: column;
}

如何決定使用哪個?

在選擇其中一種布局時,可以考慮以下問題:

  • 組件的子項如何顯示?內聯還是作為列和行?
  • 組件如何在各種尺寸的屏幕上顯示?

大多數情況下,如果組件的子項都以內聯的方式顯示,那么 Flexbox 布局可能是最好的解決方案。考慮以下組件:

圖片

這個組件中包含兩個子元素,需要在一行中顯示,就非常適合使用 Flex 布局。

如果布局需要多個列和行,那么 Grid 布局就是最合適的解決方案。考慮以下組件:

圖片

看完這些示例,下面來通過一些具體的示例學習如何決定使用哪個布局方案。

使用場景

CSS Flexbox

(1)網站導航

大多數情況下,網站導航可以使用 CSS Flexbox 來構建。最常見的模式就是左側為網站 Logo,右側為網站導航,中間為空白區域。Flex 就可以輕松實現這個布局:

圖片

布局代碼如下:

.site-header {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}

(2)操作列表

操作列表通常由一組可以執行的操作按鈕組成,它們排列在一行中:

圖片

可以看到,這些操作按鈕都是相鄰的,并且是水平分布的。這種情況就非常適合使用 Flex 來布局:

.actions-list {
display: flex;
}

.actions-list__item {
flex: 1;
}

下面這種包含標題欄或操作欄的場景也同樣適用 Flex 布局:

圖片

這個組件的頁眉和頁腳都有內聯顯示的子元素。對于頁眉,布局代碼如下:

.modal-header {
display: flex;
justify-content: space-between;
}

對于頁腳,Cancel 按鈕比較特殊,可以使用自動左邊距將其推到右側。

.cancel__action {
margin-left: auto;
}

(3)表單元素

下圖第一個組件中,左側的輸入框和右側的按鈕組合是 Flexbox 布局的完美用例:

圖片

在第二個組件中,使用 Flex 也可以快速完成布局。這里輸入框占據了所有剩余空間,其具有動態寬度。布局代碼如下:

.input {
flex: 1 1 auto;
}

(4)評論組件

Flexbox 的另一個常見用例就是評論組件。考慮以下示例:

圖片

這里左側是用戶的頭像,右側是評論內容,其占據了父元素的剩余空間。

(5)卡片組件

卡片組件有很多類型,最常見的卡片設計如下:

圖片

左側的卡片組件為上下布局,此時 Flex 容器的方向是列。右側的卡片組件為左右布局,此時 Flex 容器的方向是行,這是 Flex 布局方向的默認值。

.card {
display: flex;
flex-direction: column;
}

@media (min-width: 800px) {
.card {
flex-direction: row;
}
}

另一種卡片,圖標的下方帶有文本,它可以是一個按鈕、鏈接。這種模式下 Flex 布局同樣適用:

圖片

第一種模式的布局代碼如下:

.card {
display: flex;
justify-content: center;
}

第二種模式的布局代碼如下:

.card {
display: flex;
flex-direction: column;
align-items: center;
}

(6)Tab 菜單

當涉及到占據整個屏幕寬度的元素并且具有應該填滿所有可用空間的項目時,Flexbox 也是完美的解決方案。

圖片

這里,每個項目都應該填充可用空間,并且它們的寬度是相等的。通過將容器元素的 display? 屬性設置為 flex,即可輕松完成。

.tabs__item {
flex-grow: 1;
}

(7)功能列表

Flexbox 的一個很實用功能就是可以反轉元素的方向。默認情況下,Flexbox 的方向是從從左到右的行,我們可以可以這樣來反轉它:

.item {
flex-direction: row-reverse;
}

在下面的例子中,這個功能就非常實用:

圖片

在布局時,可以對偶數行的元素使用上述的方向反轉的屬性值。

(8)內容居中

假設有一個組件,它的內容需要在水平和垂直方向居中。可以通過 text-align 實現文本的水平居中。

圖片

.hero {
text-align: center;
}

可以使用 Flexbox 布局讓內容在水平和垂直方向居中:

.hero {
display: flex;
flex-direction: column;
align-items: center; /* 水平居中 */
justify-content: center; /* 垂直居中 */
}

CSS Grid

(1)側邊欄+內容區

當有側邊欄和內容區時,網格布局就是一個完美的解決方案。考慮以下組件:

圖片

可以在 CSS 中這樣定義:

<div class="wrapper">
<aside>Sidebar</aside>
<main>Main</main>
</div>
@media (min-width: 800px) {
.wrapper {
display: grid;
grid-template-columns: 200px 1fr;
grid-gap: 16px;
}

aside {
align-self: start;
}
}

如果 <aside>? 元素不使用 align-self?,它的高度將與 main 元素相同,無論內容長度如何。

(2)卡片網格

網格布局從名字就可以很好地理解,它很適合布局卡片網格:

圖片

布局代碼如下:

.wrapper {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
grid-gap: 16px;
}

這里的列寬至少為 200px,如果空間不夠,它會將卡片換行。如果視口寬度小于 200px,上面的布局會出現水平滾動。

我們可以僅在視口寬度足夠時才添加網格布局的定義:

@media (min-width: 800px) {
.wrapper {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
grid-gap: 16px;
}
}

(3)部分布局

在下面的設計中,可以使用兩次網格布局。第一次將整個區域劃分為左右兩個區域(左側的側邊欄,右側的表單),第二次在表單中使用網格布局。

圖片

布局代碼如下:

@media (min-width: 800px) {
.wrapper {
display: grid;
grid-template-columns: 200px 1fr;
}

.form-wrapper {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 16px;
}

.form-message,
.form-button {
grid-column: 1 / 3;
}
}

Grid 和 Flexbox 結合使用

上面介紹了這兩種布局單獨使用的場景,當然也可以結合使用這兩種布局。考慮下面的例子,對于卡片列表,可以使用 Grid 布局來實現,對于每個卡片組件,就可以使用 Flexbox 布局來實現:

圖片

以下是對布局的要求:

  • 每行卡片的高度應該相等;
  • Read more 鏈接應位于卡片的末尾,高度不固定;
  • Grid 應該使用 minmax() 函數

<div class="wrapper">
<article class="card">
<img src="sunrise.jpg" alt="" />
<div class="card__content">
<h2><!-- Title --></h2>
<p><!-- Desc --></p>
<p class="card_link"><a href="#">Read more</a></p>
</div>
</article>
</div>
@media (min-width: 500px) {
.wrapper {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
grid-gap: 16px;
}
}

.card {
display: flex; /* [1] */
flex-direction: column; /* [2] */
}

.card__content {
flex-grow: 1; /* [3] */
display: flex; /* [4] */
flex-direction: column;
}

.card__link {
margin-top: auto; /* [5] */
}

對于上面的代碼:

  1. card 元素作為 Flexbox 的容器;
  2. 布局方向為 column,表示卡片元素垂直分布;
  3. 讓卡片內容擴展并填充剩余空間;
  4. 卡片內容作為 Flexbox 的容器;
  5. 使用 margin-top: auto 將鏈接下推,無論卡片高度如何,這都會使其保持在末端。

可以看到,Grid 和 Flexbox 結合使用也不難,使用它們可以輕松實現日常開發的大多數布局。

責任編輯:武曉燕 來源: 前端充電寶
相關推薦

2022-04-15 14:57:57

Flex布局鴻蒙操作系統

2022-10-13 09:01:24

GridCSS二維布局

2021-12-01 09:53:46

CSS 技巧代碼重構

2022-10-08 00:02:00

CSS工具系統

2022-08-01 08:02:25

單元格可視化語法

2017-10-10 15:52:17

前端FlexboxCSS Grid

2024-04-09 10:10:23

GridCSS網格

2018-08-08 15:57:05

csshtml前端

2020-03-26 10:43:57

CSS Grid Ge Grid代碼

2025-04-08 05:55:00

CSS布局Grid

2025-04-27 09:12:42

2010-08-05 13:27:06

Flex布局

2022-03-23 08:01:36

CSSGrid小游戲

2019-04-03 13:00:27

CSSBFC前端

2010-08-06 15:20:25

Flex Builde

2017-03-12 10:38:56

Chromewindows

2022-08-26 09:01:07

CSSFlex 布局

2010-08-16 09:32:01

DivCSS

2010-09-01 11:34:33

CSS布局

2010-08-13 14:39:57

Flex布局
點贊
收藏

51CTO技術棧公眾號

国产精品久久午夜| 葵司免费一区二区三区四区五区| 精品国产成人系列| 六月丁香婷婷激情| 日本电影全部在线观看网站视频 | 亚欧美在线观看| 成人短视频在线观看| 99精品国产热久久91蜜凸| 国产精品久久久久久中文字 | 精品成人国产在线观看男人呻吟| 水蜜桃亚洲精品| 精品欧美一区二区精品少妇| 久久一日本道色综合久久| 久久不射电影网| free性中国hd国语露脸| 日本99精品| 欧美在线观看你懂的| 成人在线免费高清视频| 神马电影在线观看| 国产成人免费av在线| 国产精品国产自产拍高清av水多| 久久亚洲AV无码| 久久成人综合| 亚洲深夜福利网站| 国产精品果冻传媒| 2020国产精品小视频| 色综合色综合色综合| 国产情侣第一页| 含羞草www国产在线视频| 久久久久久久久久久久久夜| 国产伦理久久久| 国产成人精品白浆久久69| 奇米一区二区三区| 日本人成精品视频在线| 国产一级特黄毛片| 欧美在线资源| 久久久精品免费| 亚洲一级片在线播放| 久久av资源| 亚洲精品wwww| 老司机午夜免费福利| 网站一区二区| 日韩欧美一区二区在线视频| 污污网站免费观看| 69堂精品视频在线播放| 色综合久久天天综合网| 欧美亚洲精品一区二区| h片在线观看下载| 一区二区三区国产豹纹内裤在线| 樱空桃在线播放| av毛片在线免费看| 亚洲三级免费观看| 大地资源网在线观看免费官网| 免费在线观看黄| 中文字幕一区三区| 综合一区中文字幕| 国产在线看片| 亚洲精品视频一区二区| 青青视频免费在线观看| 亚洲精品白浆| 亚洲一区二区在线观看视频| 成年在线观看视频| 金瓶狂野欧美性猛交xxxx | 在线观看免费91| 日本不卡视频| 亚洲欧美日韩国产综合| www.-级毛片线天内射视视| 国产在线一区二区视频| 亚洲一级二级三级| 日韩中文字幕在线视频观看| 在线免费三级电影网站| 日本高清不卡在线观看| 2025韩国理伦片在线观看| 久久免费影院| 日韩免费高清视频| 亚洲一区二区三区四区五区六区 | 亚州欧美一区三区三区在线| 伊人在线视频| 一区2区3区在线看| 欧美精品99久久| 日韩欧美少妇| 欧美一区二区网站| 中文乱码人妻一区二区三区视频| 久久不见久久见免费视频7| 最近的2019中文字幕免费一页| 999精品在线视频| 在线看片日韩| 国产精品高潮呻吟久久av野狼| 一区二区不卡视频在线观看| 粉嫩av一区二区三区| 老司机精品福利在线观看| av在线之家电影网站| 亚洲一区在线观看免费 | 国产丝袜一区视频在线观看| 婷婷综合在线视频| 亚洲视屏一区| 国产精品福利在线| 农村少妇久久久久久久| 国产亚洲1区2区3区| 国产成年人在线观看| 蜜桃av.网站在线观看| 欧美日韩aaaaaa| 无码一区二区精品| 性欧美欧美巨大69| 热久久美女精品天天吊色| 国产毛片一区二区三区va在线| av一区二区三区在线| 在线国产伦理一区| 欧美成人h版| 日韩精品专区在线影院观看| 亚洲一二三精品| 亚洲乱码视频| 亚洲影影院av| yjizz视频网站在线播放| 一区二区三区精品视频| 中日韩av在线播放| 国产欧美日韩精品一区二区免费| 欧美精品一区在线播放| 国模私拍一区二区| 26uuu色噜噜精品一区二区| 中文字幕第一页亚洲| 播放一区二区| 精品中文视频在线| 日本三级中文字幕| 国产麻豆9l精品三级站| 亚洲成人一区二区三区| 亚洲美女炮图| 亚洲国产精品99久久| 国产探花在线播放| 久久国产精品色| 日韩精品欧美专区| 成人美女大片| 日韩激情视频在线| 日本天堂在线视频| 风流少妇一区二区| 视色,视色影院,视色影库,视色网| 色豆豆成人网| 一区二区欧美亚洲| 中文字幕免费观看| 久久奇米777| 国产男女无遮挡| 香蕉久久精品日日躁夜夜躁| 97久久久久久| 少妇人妻一区二区| 亚洲444eee在线观看| 久久人妻少妇嫩草av蜜桃| 欧美人成网站| 91精品免费| 手机av免费在线| 欧美变态tickling挠脚心| 欧美日韩激情在线观看| 国产成人免费视频一区| 精品无码国产一区二区三区av| 欧美大片91| 欧美激情videos| 蜜臀av中文字幕| 精品成人在线视频| 亚洲av综合一区二区| 天堂久久久久va久久久久| 欧美视频1区| 国产成人精品一区二区三区视频| 一区二区三区精品99久久| 中文字幕乱码人妻无码久久 | 国产亚洲精品成人| 成人高清免费观看| 亚洲欧洲日产国码无码久久99| 国产欧美一区| 国产主播精品在线| 青青草视频在线免费直播| 亚洲成**性毛茸茸| 久久久黄色大片| 中文在线一区二区| 国产精品久久久久久久99| 一区在线视频观看| 欧美日韩日本网| 天堂久久一区| 久久久久女教师免费一区| 亚洲日本国产精品| 欧美色窝79yyyycom| 青青草激情视频| 97精品国产露脸对白| 成人免费在线观看视频网站| 亚洲精品久久久| 欧美大陆一区二区| 台湾天天综合人成在线| 午夜精品久久久久久久男人的天堂| 玖玖综合伊人| 欧美一区二区三区免费视频 | 亚洲区欧洲区| 国产视频欧美视频| 国产深喉视频一区二区| 狠狠躁夜夜躁人人躁婷婷91| 国产白丝一区二区三区| 成人一区二区三区中文字幕| 成年人在线观看视频免费| 欧美一区91| 日本一区二区免费看| 视频一区在线| 国产在线观看一区二区三区| 免费高潮视频95在线观看网站| 色综合伊人色综合网| 少妇精品视频一区二区 | 无码精品人妻一区二区| 欧美猛男超大videosgay| 在线观看亚洲天堂| 亚洲人成小说网站色在线| www.色天使| 成人免费视频免费观看| 精品亚洲视频在线| 久久久久久夜| 黄色一级视频在线播放| 国产精品国产一区| 欧美一二三区| 日韩av午夜| 99九九电视剧免费观看| 亚洲伦理网站| 国产精品美女在线观看| 超级碰碰久久| 2019中文在线观看| wwwwxxxx在线观看| 裸体女人亚洲精品一区| 亚洲1卡2卡3卡4卡乱码精品| 国产偷亚洲偷欧美偷精品| 四季av日韩精品一区| 日韩欧美电影一区| 91福利免费视频| 欧美片网站yy| 欧美激情一区二区三区免费观看| 欧美性猛交99久久久久99按摩| 久久亚洲AV无码| 亚洲国产一区视频| 青娱乐国产在线| 一区二区在线观看不卡| chinese全程对白| 中文字幕在线不卡一区二区三区| 神马久久久久久久久久久| 国产亚洲一区字幕| 少妇精品一区二区三区| www.日韩精品| av无码一区二区三区| 不卡一卡二卡三乱码免费网站| 中文字幕久久久久久久| 国产精品一区专区| 精品国产乱码久久久久久1区二区| 蜜臀va亚洲va欧美va天堂| 中文字幕网av| 九色|91porny| 青娱乐国产精品视频| 国产精品自拍毛片| 亚洲三级在线视频| 从欧美一区二区三区| 野战少妇38p| 91在线国产观看| 88久久精品无码一区二区毛片| 久久人人97超碰com| 69视频在线观看免费| 国产精品毛片无遮挡高清| 手机在线中文字幕| 亚洲欧洲综合另类| 国产在线免费视频| 欧美日韩综合视频| 国产真人无遮挡作爱免费视频| 欧美中文字幕不卡| 国产一区二区视频免费观看| 日韩欧美视频在线| 无码国产色欲xxxx视频| 亚洲一级黄色片| 欧美激情二区| 欧美亚洲国产一区二区三区| 小说区视频区图片区| 亚洲小说图片| 在线看无码的免费网站| 欧美二区视频| www黄色av| 久久99精品国产91久久来源| 亚洲av综合色区无码另类小说| av一区二区三区在线| 夜夜春很很躁夜夜躁| 亚洲柠檬福利资源导航| 97免费在线观看视频| 欧美色男人天堂| 性欧美18一19性猛交| 国产视频精品va久久久久久| 黄色网页在线免费看| 96精品视频在线| 国产乱码精品一区二区三区亚洲人 | 免费看污污视频| 亚洲综合精品四区| 亚洲欧美天堂在线| 91在线观看视频| 日本中文在线视频| 色成人在线视频| 亚洲第一天堂影院| 自拍偷拍亚洲欧美| 888av在线视频| 成人疯狂猛交xxx| 日韩欧美国产大片| 中文字幕の友人北条麻妃| 美女精品网站| 精品国产aⅴ一区二区三区东京热| 久久亚洲精品国产精品紫薇| 午夜精品一区二区三区视频| 在线免费亚洲电影| 国产又爽又黄网站亚洲视频123| www国产91| 欧美男体视频| 国产日韩欧美一区二区| 91精品国产乱码久久久久久| 国产免费成人在线| 成人小视频在线观看| 麻豆精品国产免费| 欧美丝袜丝交足nylons| 色av男人的天堂免费在线| 欧美成人在线影院| 日韩成人综合网| 亚洲bbw性色大片| 丝袜诱惑亚洲看片| 免费成人蒂法网站| 亚洲成人免费视| 性欧美一区二区三区| 久久精品国产2020观看福利| 日韩和的一区二在线| 久久久一本精品99久久精品| 伊人成年综合电影网| 欧美日韩一区二区区别是什么 | 久青草国产97香蕉在线视频| 播放一区二区| 日本一区二区在线视频| 99亚洲一区二区| 亚洲日本久久久| 夜夜嗨av一区二区三区中文字幕 | 亚洲新中文字幕| 自由日本语热亚洲人| 精品国产乱码久久久久久88av| 国精品一区二区三区| 无码人妻少妇色欲av一区二区| 成人免费视频在线观看| 91极品身材尤物theporn| 在线色欧美三级视频| 久久久人成影片一区二区三区在哪下载 | 亚洲人成无码www久久久| 91网址在线看| 国产又黄又猛又粗又爽| 日韩精品中文字幕在线| 香蕉伊大人中文在线观看| 久久综合一区二区三区| 免费一级欧美片在线播放| 成人免费看aa片| 欧美午夜一区二区| 日本暖暖在线视频| 亚洲aⅴ日韩av电影在线观看 | 亚洲国产精华液网站w| 日本成人一级片| 日韩有码在线视频| av成人在线网站| 青青草视频在线视频| 99久久久无码国产精品| 伊人中文字幕在线观看| 一区二区av在线| 久久综合偷偷噜噜噜色| 日韩一级片免费视频| 超碰在线cao| 444亚洲人体| 99精品国产在热久久| 亚洲黄色在线网站| 在线观看国产日韩| 麻豆91在线| 国产伦精品一区二区三区四区免费| 在线亚洲免费| 国产精品美女高潮无套| 制服丝袜国产精品| 国模私拍一区二区国模曼安| 日韩aⅴ视频一区二区三区| 精品一区二区三区香蕉蜜桃| 玖玖爱免费视频| 亚洲欧美中文日韩v在线观看| 成人自拍视频网| 51xx午夜影福利| 久久久精品综合| 99热这里只有精品66| 欧美孕妇性xx| 婷婷亚洲图片| 国产乱了高清露脸对白| 欧美三片在线视频观看| 激情在线视频播放| 欧美激情一区二区三区在线视频| 久久99久久99精品免视看婷婷| 国产精品自拍视频一区| 一区二区三欧美| 国内视频在线精品| 特级丰满少妇一级| 亚洲成人激情自拍| 免费在线视频欧美| 欧美精品v日韩精品v国产精品| 精品系列免费在线观看| 天天操中文字幕| 欧美另类在线播放| 精品视频久久| 丰满少妇一区二区三区| 欧美一级夜夜爽|