方便的前端布局————彈性盒子

前言

其實彈性盒子這個知識观游,與其我來講匈织,倒不如讓你們自己在這個網(wǎng)址看↓↓↓

https://www.runoob.com/w3cnote/flex-grammar.html

因為我也是在這里看的。

1蜜托、什么是flex

Flex是Flexible Box的縮寫,意為“彈性布局”,也被開發(fā)者們稱為“彈性盒子”四苇,這是一種為盒裝布局提供最大靈活性的布局方式,任何容器(比如div方咆、p等)都可以指定為flex布局方式月腋。

2、flex的概念

所謂的flex布局瓣赂,我理解為就是用盒子裝液體榆骚。
我們通常的布局方式可以理解為往盒子里裝固體,固體所占空間就是固體本身的大小煌集,如果固體的大小超過了盒子的大小妓肢,那么他也將完全的顯示出固體大小。
而彈性盒子可以將盒子內(nèi)部的組件全部變?yōu)椤耙后w”苫纤,當(dāng)你為盒子里添加新組件的時候碉钠,他們會平均分配掉盒子內(nèi)所有的空間(如果你沒有設(shè)置他們的配比),而如果你加入的組件太多卷拘,導(dǎo)致了超出了盒子喊废,那么他就會像液體一樣溢出來。
將以下代碼運行一遍你能更好的理解我的意思
這是彈性布局↓↓↓

<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            body{
                display: flex;
                width: 200px;
            }
            div{
                width: 1300px;
                height: 100px;
                background: red;
            }
        </style>
    </head>
    <body>
        <div>
            
        </div>
    </body>
</html>

這是通常布局↓↓↓

<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            body{
                display: block;
                width: 200px;
            }
            div{
                width: 1300px;
                height: 100px;
                background: red;
            }
        </style>
    </head>
    <body>
        <div>
            
        </div>
    </body>
</html>

3栗弟、flex的使用方式

3.1基本使用

前面說過污筷,在任意容器中都可以使用flex布局

/*對于塊級元素*/
            body{
                display: flex;
            }
            /*對于行內(nèi)元素*/
            span{
                display: inline-flex;
            }
            /*webkit內(nèi)核的瀏覽器*/
            body{
                display: -webkit-flex;
            }

flex布局設(shè)置在父級元素身上,但它作用于子元素乍赫,也就是說如果你的父元素是空的瓣蛀,那么你將看不到任何變化陆蟆。這和我們平時使用的屬性有很大的不同,這也是許多剛剛接觸彈性布局的人常犯的錯誤(別問我怎么知道的揪惦,說多都是淚)

3.2遍搞、常用屬性

在flex布局中,我們常用的屬性有六個器腋,分別是
1溪猿、flex-direction
2、flex-wrap
3纫塌、flex-flow
4诊县、justify-content
5、align-items
6措左、align-content

下面我來一一介紹這些屬性依痊。

3.2.1、flex-direction

flex-direction屬性決定主軸的方向怎披,即決定了組件的排列方式胸嘁,是從左往右排,還是從右往左排凉逛,又或是從上往下排性宏,也可以從下往上排。

body {
  flex-direction: row | row-reverse | column | column-reverse;
}

上面四個值分別是從左往右状飞,從右往左毫胜,從上到下,從下到上
3.2.2诬辈、flex-wrap
flex-wrap屬性決定了組件的換行方式酵使,不過在一般情況下,默認(rèn)屬性時不換行

body{
  flex-wrap: nowrap | wrap | wrap-reverse;
}

上面三個值分別是不換行焙糟,向下?lián)Q行口渔,向上換行
3.2.3、flex-flow
flex-flow屬性其實就是上面兩個屬性的統(tǒng)稱酬荞,(類似于我們將所有的背景屬性統(tǒng)寫為background一樣)搓劫,默認(rèn)屬性是row nowrap
3.2.4、justify-content
justify-content屬性決定了主軸的對齊方式混巧,比如你的主軸是row(即從左往右排列)那么這個屬性就相當(dāng)于text-align屬性叙赚,而如果你的主軸是column(即從上到下排列)晰绎,這個屬性就相當(dāng)于vertical-align。

body{
  justify-content: flex-start | flex-end | center | space-between | space-around;
}

上面五個值分別是靠主軸對齊市怎,遠(yuǎn)離主軸方向?qū)R陨亡,居中傍衡,兩端對齊(不包含邊距)深员,等間距對齊(包含邊距)
3.2.5、align-items
align-items屬性決定了主軸交叉軸的對齊方式蛙埂,也就是和justify-content旋轉(zhuǎn)90度的對齊方式倦畅。
body{
align-items: flex-start | flex-end | center | baseline | stretch;
}
上面五個值分別是靠交叉軸對齊,遠(yuǎn)離交叉軸對齊绣的,居中叠赐,基線對齊(基線的概念與vertical-align的基線相同),占滿交叉軸方向
3.2.6屡江、align-content
align-content屬性決定了多根軸線的對齊方式芭概。如果項目只有一根軸線,該屬性不起作用惩嘉。

body {
  align-content: flex-start | flex-end | center | space-between | space-around | stretch;
}

上面六個值分別是靠交叉軸對齊罢洲,遠(yuǎn)離交叉軸對齊,居中文黎,與交叉軸兩端對齊惹苗,與交叉軸等間距對齊,占滿整個交叉軸

4耸峭、flex的子元素屬性

除了可以在父元素上設(shè)置flex的屬性外桩蓉,其實在flex盒子的子元素上也有可以設(shè)置的屬性

4.1、order

order屬性可以用來改變子元素在主軸方向的排列順序抓艳,數(shù)值越小触机,排列越靠前,但是他們在html的結(jié)構(gòu)中不會變化
將下面代碼運行一遍玷或,你會有更直觀的感受儡首。(按F12鍵查看結(jié)構(gòu))

<style type="text/css">
            body{
                display: flex;
            }
            div:nth-of-type(1){
                background: red;
                width: 100px;
                height: 100px;
                order: 2;
            }
            div:nth-of-type(2){
                background: blue;
                width: 100px;
                height: 100px;
                order: 3;
            }
            div:nth-of-type(3){
                background: green;
                width: 100px;
                height: 100px;
                order: 1;
            }
        </style>
<body>
        <div></div>
        <div></div>
        <div></div>
    </body>

4.2、flex-grow

flex-grow屬性定義了子元素的放大比例偏友,也就是子元素在父元素中的占比蔬胯,默認(rèn)值為0,即如果存在剩余空間也不放大位他。
運行下面代碼幫助理解

<style type="text/css">
            body{
                display: flex;
                width: 1000px;
            }
            div:nth-of-type(1){
                background: red;
                width: 100px;
                height: 100px;
                flex-grow: 2;
            }
            div:nth-of-type(2){
                background: blue;
                width: 100px;
                height: 100px;
                flex-grow: 1;
            }
            div:nth-of-type(3){
                background: green;
                width: 100px;
                height: 100px;
                flex-grow: 1;
            }
        </style>
<body>
        <div></div>
        <div></div>
        <div></div>
    </body>

4.3氛濒、flex-shrink
flex-shrink屬性和flex-grow屬性相反,他定義了子元素的縮小比例鹅髓,默認(rèn)值為1舞竿,即如果空間不足,所有子元素等比例縮小
運行下面代碼有助于理解

<style type="text/css">
            body{
                display: flex;
                width: 100px;
            }
            div:nth-of-type(1){
                background: red;
                width: 100px;
                height: 100px;
                flex-shrink: 1;
            }
            div:nth-of-type(2){
                background: blue;
                width: 100px;
                height: 100px;
                flex-shrink: 1;
            }
            div:nth-of-type(3){
                background: green;
                width: 100px;
                height: 100px;
                flex-shrink: 1;
            }
        </style>
<body>
        <div></div>
        <div></div>
        <div></div>
    </body>

4.4窿冯、flex-basis

flex-basis屬性定義了子元素在主軸上的長度骗奖,默認(rèn)值為auto,你可以理解為他就是定義了width或height,當(dāng)你設(shè)定了flex-basis屬性后你原本的width或height屬性就會失效执桌。

4.5鄙皇、flex

flex屬性就是grow、shrink仰挣、basis的縮寫伴逸,默認(rèn)值為0 1 auto,后兩個屬性可選膘壶。
該屬性有兩個快捷值:auto (1 1 auto) 和 none (0 0 auto)错蝴。
建議優(yōu)先使用這個屬性,而不是單獨寫三個分離的屬性香椎,因為瀏覽器會推算相關(guān)值漱竖。

4.6 align-self

align-self屬性定義了子元素與其他元素不對齊的方式,默認(rèn)值是auto畜伐,即繼承了父元素align-items屬性馍惹,如果沒有父元素,則等同于stretch玛界。
運行下面代碼幫助理解

<style type="text/css">
            body{
                display: flex;
                width: 1000px;
                height: 500px;
            }
            div:nth-of-type(1){
                background: red;
                width: 100px;
                height: 100px;
                align-self: flex-end;
            }
            div:nth-of-type(2){
                background: blue;
                width: 100px;
                height: 100px;
            }
            div:nth-of-type(3){
                background: green;
                width: 100px;
                height: 100px;
            }
        </style>
<body>
        <div></div>
        <div></div>
        <div></div>
    </body>

5万矾、結(jié)語

flex布局方式正在逐漸成為新流行的布局方式,我也是最近才接觸到的慎框,如果我上面說的有什么不對良狈,歡迎指出。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末笨枯,一起剝皮案震驚了整個濱河市薪丁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌馅精,老刑警劉巖严嗜,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異洲敢,居然都是意外死亡漫玄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門压彭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來睦优,“玉大人,你說我怎么就攤上這事壮不『古蹋” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵询一,是天一觀的道長衡未。 經(jīng)常有香客問我尸执,道長家凯,這世上最難降的妖魔是什么缓醋? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮绊诲,結(jié)果婚禮上送粱,老公的妹妹穿的比我還像新娘。我一直安慰自己掂之,他們只是感情好抗俄,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著世舰,像睡著了一般动雹。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上跟压,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天胰蝠,我揣著相機(jī)與錄音,去河邊找鬼震蒋。 笑死茸塞,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的查剖。 我是一名探鬼主播钾虐,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼笋庄!你這毒婦竟也來了效扫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤直砂,失蹤者是張志新(化名)和其女友劉穎菌仁,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哆键,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡掘托,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了籍嘹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片闪盔。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖辱士,靈堂內(nèi)的尸體忽然破棺而出泪掀,到底是詐尸還是另有隱情,我是刑警寧澤颂碘,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布异赫,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏塔拳。R本人自食惡果不足惜鼠证,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望靠抑。 院中可真熱鬧量九,春花似錦、人聲如沸颂碧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽载城。三九已至肌似,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間诉瓦,已是汗流浹背川队。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留垦搬,地道東北人呼寸。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像猴贰,于是被迫代替她去往敵國和親对雪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

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

  • H5移動端知識點總結(jié) 閱讀目錄 移動開發(fā)基本知識點 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,496評論 0 26
  • 移動開發(fā)基本知識點 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,472評論 0 6
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案米绕? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補...
    _Yfling閱讀 13,751評論 1 92
  • 彈性盒子是一種新技術(shù)瑟捣,但在如今各個瀏覽器都廣泛支持的情況下,它已經(jīng)開始準(zhǔn)備廣泛應(yīng)用了栅干。 彈性盒子提供了工具迈套,允許快...
    codeTao閱讀 851評論 0 0
  • 上個世紀(jì)九十年代桑李,那個時候我還是一個青澀少年,當(dāng)時有一首很流行的歌曲叫做《一無所有》窿给,崔健的搖滾贵白,也許那種壓抑環(huán)境...
    臥龍飲水閱讀 193評論 0 2