Flex布局-實(shí)例

一、骰子的布局

骰子的一面最多可以放置9個(gè)點(diǎn)流纹,下面用flex實(shí)現(xiàn)從1個(gè)點(diǎn)到9個(gè)點(diǎn)的布局糜烹。


image.png

如果不加說(shuō)明,本節(jié)的HTML模板一律如下漱凝。

<div class="box">
  <span class="item"></span>
</div>

上面代碼中疮蹦,div元素是Flex容器,span元素是Flex項(xiàng)目茸炒。如果有多個(gè)項(xiàng)目愕乎,就要添加多個(gè)span元素阵苇,以此類(lèi)推。

1.1 單項(xiàng)目

首先感论,只有左上角1個(gè)點(diǎn)的情況绅项。Flex布局默認(rèn)就是首行左對(duì)齊,所以一行代碼就夠了比肄。

  • 1.1.1


    image.png
.box{
  display: flex;
}

設(shè)置項(xiàng)目的對(duì)齊方式快耿,就能實(shí)現(xiàn)居中對(duì)齊和右對(duì)齊。

  • 1.1.2


    image.png
.box{
  display: flex;
  justify-content: flex-center;
}
  • 1.1.3


    image.png
.box{
   display: flex;
   justify-content: flex-end;
}

設(shè)置交叉軸的對(duì)齊方式

  • 1.1.4


    image.png
.box{
  display: flex;
  align-items: center;
}
  • 1.1.5


    image.png
.box{
  display: flex;
  justify-content: center;
  align-items: center;
}
  • 1.1.6


    image.png
.box{
  display: flex;
  justify-content: center;
  align-items: flex-end;
  • 1.1.7


    image.png
.box{
  display: flex;
  justify-content: flex-end;
  align-items: flex-end;
}
1.2 雙項(xiàng)目
  • 1.2.1


    image.png
.box{
  display: flex;
  justify-content: space-between;
}
  • 1.2.2


    image.png
.box{
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
  • 1.2.3


    image.png
.box{
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
}
  • 1.2.4


    image.png
.box{
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: flex-end;
}
  • 1.2.5


    image.png
.box{
  display: flex;
}
.item:nth-child(2){
  align-self: center;
}
  • 1.2.6


    image.png
.box{
  display: flex;
  justify-content: space-between;
}
 .item:nth-child(2) {
    align-self: flex-end;
  }
1.3 三項(xiàng)目
  • 1.3.1


    image.png
.box {
  display: flex;
}

.item:nth-child(2) {
  align-self: center;
}

.item:nth-child(3) {
  align-self: flex-end;
}
1.4 四項(xiàng)目
  • 1.4.1


    image.png
.box {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-content: space-between;
}
  • 1.4.2


    image.png
<div class="box">
  <div class="column">
    <span class="item"></span>
    <span class="item"></span>
  </div>
  <div class="column">
    <span class="item"></span>
    <span class="item"></span>
  </div>
</div>
.box {
  display: flex;
  flex-wrap: wrap;
  align-content: space-between;
}

.column {
  flex-basis: 100%;
  display: flex;
  justify-content: space-between;
}
1.5 六項(xiàng)目
  • 1.5.1


    image.png
.box {
  display: flex;
  flex-wrap: wrap;
  align-content: space-between;
}
  • 1.5.2


    image.png
.box {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  align-content: space-between;
}
  • 1.5.3


    image.png
<div class="box">
  <div class="row">
    <span class="item"></span>
    <span class="item"></span>
    <span class="item"></span>
  </div>
  <div class="row">
    <span class="item"></span>
  </div>
  <div class="row">
     <span class="item"></span>
     <span class="item"></span>
  </div>
</div>

...
<style>
.box {
  display: flex;
  flex-wrap: wrap;
}
.row{
  flex-basis: 100%;
  display:flex;
}
.row:nth-child(2){
  justify-content: center;
}
.row:nth-child(3){
  justify-content: space-between;
}
</style>
1.6 九項(xiàng)目
image.png
.box {
  display: flex;
  flex-wrap: wrap;
}

二薪前、網(wǎng)格布局

2.1 基本網(wǎng)格布局

最簡(jiǎn)單的網(wǎng)格布局润努,就是平均分布。在容器里面平均分配空間示括,跟上面的骰子很像铺浇,但是需要設(shè)置項(xiàng)目的自動(dòng)縮放。


image.png

HTML代碼如下:

<div class="Grid">
  <div class="Grid-cell">...</div>
  <div class="Grid-cell">...</div>
  <div class="Grid-cell">...</div>
</div>

CSS代碼如下:

  .Grid{
    display: flex;
  }
  .Grid-cell{
    flex: 1;
  }
2.2 百分比布局

某個(gè)網(wǎng)格的寬度為固定的百分比垛膝,其余網(wǎng)格平均分配剩余的空間鳍侣。


image.png

HTML代碼如下:

<div class="Grid">
  <div class="Grid-cell u-1of4">...</div>
  <div class="Grid-cell">...</div>
  <div class="Grid-cell u-1of3">...</div>
</div>
.Grid {
  display: flex;
}
.Grid-cell {
  flex: 1;
}
.Grid-cell.u-full {
  flex: 0 0 100%;
}
.Grid-cell.u-1of2 {
  flex: 0 0 50%;
}
.Grid-cell.u-1of3 {
  flex: 0 0 33.3333%;
}
.Grid-cell.u-1of4 {
  flex: 0 0 25%;
}

三、圣杯布局

圣杯布局(Holy Grail Layout)指的是一種常見(jiàn)的網(wǎng)站布局吼拥。頁(yè)面從上到下倚聚,分為三個(gè)部分:頭部(header),軀干(body)凿可,尾部惑折。其中軀干又水平分為三欄,從左到右為:導(dǎo)航枯跑、主欄惨驶、副欄。


image.png

HTML代碼如下:

<body class="HolyGrail">
  <header>...</header>
  <div class="HolyGrail-body">
    <main class="HolyGrail-content">...</main>
    <nav class="HolyGrail-nav">...</nav>
    <aside class="HolyGrail-ads">...</aside>
  </div>
  <footer>...</footer>
</body>

CSS代碼如下:

.HolyGrail {
  display: flex;
  min-height: 100vh;
  flex-direction: column;
}
header,
footer {
  flex: 1;
}
.HolyGrail-body {
  display: flex;
  flex: 1;
}
.HolyGrail-content {
  flex: 1;
}
.HolyGrail-nav, .HolyGrail-ads {
  /* 兩個(gè)邊欄的寬度設(shè)為12em */
  flex: 0 0 12em;
}
.HolyGrail-nav {
  /* 導(dǎo)航放到最左邊 */
  order: -1;
}

如果是小屏幕敛助,軀干的三欄自動(dòng)變?yōu)榇怪悲B加粗卜。

@media (max-width: 768px) {
  .HolyGrail-body {
    flex-direction: column;
    flex: 1;
  }
  .HolyGrail-nav,
  .HolyGrail-ads,
  .HolyGrail-content {
    flex: auto;
  }
}

四、輸入框的布局

我們常常需要在輸入框的前方添加提示纳击,后方添加按鈕续扔。


image.png

HTML代碼如下:

<div class="InputAddOn">
  <span class="InputAddOn-item">...</span>
  <input class="InputAddOn-field">
  <button class="InputAddOn-item">...</button>
</div>

CSS代碼如下:

.InputAddOn {
  display: flex;
}
.InputAddOn-field {
  flex: 1;
}
五、懸掛式布局

有時(shí)焕数,主欄的左側(cè)或右側(cè)纱昧,需要添加一個(gè)圖片欄。


image.png

HTML代碼如下:

<div class="Media">
  <img class="Media-figure" src="" alt="">
  <p class="Media-body">...</p>
</div>

CSS代碼如下:

.Media {
  display: flex;
  align-items: flex-start;
}
.Media-figure {
  margin-right: 1em;
}
.Media-body {
  flex: 1;
}
六堡赔、固定的底欄

有時(shí)砌些,頁(yè)面內(nèi)容太少,無(wú)法占滿(mǎn)一屏的高度,底欄就會(huì)抬高到頁(yè)面的中間存璃。這時(shí)可以采用Flex布局仑荐,讓底欄總是出現(xiàn)在頁(yè)面的底部。


image.png

HTML代碼:

<body class="Site">
  <header>...</header>
  <main class="Site-content">...</main>
  <footer>...</footer>
</body>

CSS代碼:

.Site {
  display: flex;
  min-height: 100vh;
  flex-direction: column;
}
.Site-content {
  flex: 1;
}
七纵东、流式布局

每行的項(xiàng)目數(shù)固定粘招,會(huì)自動(dòng)分行。


image.png

CSS寫(xiě)法:

.parent {
  width: 200px;
  height: 150px;
  background-color: black;
  display: flex;
  flex-flow: row wrap;
  align-content: flex-start;
}
.child {
  box-sizing: border-box;
  background-color: white;
  flex: 0 0 25%;
  height: 50px;
  border: 1px solid red;
}

本文來(lái)自阮一峰-Flex 布局教程:實(shí)例篇偎球,僅供自己學(xué)習(xí)參考整理洒扎。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市衰絮,隨后出現(xiàn)的幾起案子袍冷,更是在濱河造成了極大的恐慌,老刑警劉巖猫牡,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胡诗,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡淌友,警方通過(guò)查閱死者的電腦和手機(jī)煌恢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)震庭,“玉大人瑰抵,你說(shuō)我怎么就攤上這事茎匠【旨裕” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵俭嘁,是天一觀的道長(zhǎng)拨拓。 經(jīng)常有香客問(wèn)我肴颊,道長(zhǎng),這世上最難降的妖魔是什么千元? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任苫昌,我火速辦了婚禮颤绕,結(jié)果婚禮上幸海,老公的妹妹穿的比我還像新娘。我一直安慰自己奥务,他們只是感情好物独,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著氯葬,像睡著了一般挡篓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天官研,我揣著相機(jī)與錄音秽澳,去河邊找鬼。 笑死戏羽,一個(gè)胖子當(dāng)著我的面吹牛担神,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播始花,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼妄讯,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了酷宵?” 一聲冷哼從身側(cè)響起亥贸,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎浇垦,沒(méi)想到半個(gè)月后炕置,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡溜族,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年讹俊,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片煌抒。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡仍劈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出寡壮,到底是詐尸還是另有隱情贩疙,我是刑警寧澤,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布况既,位于F島的核電站这溅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏棒仍。R本人自食惡果不足惜悲靴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望莫其。 院中可真熱鬧癞尚,春花似錦、人聲如沸乱陡。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)憨颠。三九已至胳徽,卻和暖如春积锅,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背养盗。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工缚陷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人往核。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓蹬跃,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親铆铆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蝶缀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 上一篇文章介紹了Flex布局的語(yǔ)法,今天介紹常見(jiàn)布局的Flex寫(xiě)法薄货。你會(huì)看到翁都,不管是什么布局,F(xiàn)lex往往都可以幾...
    君臨天下夜未央閱讀 3,716評(píng)論 1 12
  • 先來(lái)看看幾種常見(jiàn)的布局方式 我的主要參考資料是Landon Schropp的文章和Solved by Flexbo...
    Sylvie_9459閱讀 614評(píng)論 0 2
  • 前言: Flex布局的靈活性讓它可以應(yīng)用在任何場(chǎng)景谅猾,徹底代替了傳統(tǒng)布局柄慰,除了IE基本都可以兼容,是PC和移動(dòng)端的布...
    Chris__Liu閱讀 377評(píng)論 0 0
  • 一税娜、基本網(wǎng)格布局 最簡(jiǎn)單的網(wǎng)格布局坐搔,就是平均分布。 HTML代碼如下: CSS代碼如下: 二敬矩、左邊固定概行,右邊自適應(yīng)...
    gitJason閱讀 250評(píng)論 0 1
  • 在CSS布局中,實(shí)現(xiàn)垂直居中弧岳、相同高度的列等一直是令人頭疼的問(wèn)題凳忙,但不管是什么布局,F(xiàn)lex往往都可以幾行命令搞定...
    虹貓1992閱讀 9,077評(píng)論 0 7