flex布局

flex

1,flex布局又叫彈性布局蠢棱,一個(gè)元素為flex布局時(shí)笆凌,子元素的float、clear和vertical-align屬性沒(méi)有作用时甚。

列:以float為列

<!DOCTYPE html>

<html lang="en">

<head>

? ? <meta charset="UTF-8">

? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">

? ? <meta http-equiv="X-UA-Compatible" content="ie=edge">

? ? <title>測(cè)試flexbox</title>

</head>

<style>

.box{

? ? display: flex;

? ? width: 300px;

? ? height: 100px;

? ? background: #000;

}

.box_child{

? ? width: 50px;

? ? height: 50px;

? ? background: red;

}

</style>

<body>

? ? <div class="box">

? ? ? ? <div class="box_child"></div>

? ? </div>

</body>

</html>


結(jié)果:


當(dāng)給box_child添加float: right;

結(jié)果box_child還在原來(lái)位置隘弊,并未移到box右邊。


2荒适,flex布局下的屬性:

2-1梨熙,flex-direction規(guī)定flex布局下的子元素怎么排列,可選值row 刀诬, row-reverse 咽扇,column , column-reverse。

列:

如果是flex-direction:row质欲;

<!DOCTYPE html>

<html lang="en">

<head>

? ? <meta charset="UTF-8">

? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">

? ? <meta http-equiv="X-UA-Compatible" content="ie=edge">

? ? <title>測(cè)試flexbox</title>

</head>

<style>

.box{

? ? display: flex;

? ? width: 300px;

? ? height: 100px;

? ? background: #000;

? ? flex-direction: row

}

.box_child1{

? ? width: 50px;

? ? height: 50px;

? ? background: red;

}

.box_child2{

? ? width: 50px;

? ? height: 50px;

? ? background:#f2f22f;

}

</style>

<body>

? ? <div class="box">

? ? ? ? <div class="box_child1"></div>

? ? ? ? <div class="box_child2"></div>

? ? </div>

</body>

</html>

結(jié)果:


如果是flex-direction:row-reverse树埠;



如果是flex-direction:column;



如果是flex-direction:column-reverse把敞;


2-2弥奸,flex-wrap定義如果一條軸線排不下,如何換行奋早,可選值 nowrap 盛霎, wrap ,wrap-reverse耽装,默認(rèn)是nowrap愤炸。

列:

如果是flex-wrap:nowrap;

<!DOCTYPE html>

<html lang="en">

<head>

? ? <meta charset="UTF-8">

? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">

? ? <meta http-equiv="X-UA-Compatible" content="ie=edge">

? ? <title>測(cè)試flexbox</title>

</head>

<style>

.box{

? ? display: flex;

? ? width: 250px;

? ? background: #000;

? ? padding: 20px;

? ? flex-direction: row;

? ? flex-wrap: nowrap;

}

.box_child{

? ? width: 50px;

? ? height: 50px;

? ? border: 1px solid #ddd;

? ? background: red;

}

</style>

<body>

? ? <div class="box">

? ? ? ? <div class="box_child">1</div>

? ? ? ? <div class="box_child">2</div>

? ? ? ? <div class="box_child">3</div>

? ? ? ? <div class="box_child">4</div>

? ? ? ? <div class="box_child">5</div>

? ? ? ? <div class="box_child">6</div>

? ? </div>

</body>

</html>

結(jié)果:



box_child寬度變小,不換行掉奄。

如果是wrap:


box_child換行规个。

如果是wrap-reverse


box_child換行且從下往上排。


2-3姓建,justify-content定義了子元素在主軸上的對(duì)齊方式诞仓,可選值有 flex-start , flex-end 速兔, center 墅拭,space-between , space-around;

列:

<!DOCTYPE html>

<html lang="en">

<head>

? ? <meta charset="UTF-8">

? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">

? ? <meta http-equiv="X-UA-Compatible" content="ie=edge">

? ? <title>測(cè)試flexbox</title>

</head>

<style>

.box{

? ? display: flex;

? ? width: 250px;

? ? background: #000;

? ? padding: 20px;

? ? flex-direction: row;

? ? justify-content: flex-start;

}

.box_child{

? ? width: 50px;

? ? height: 50px;

? ? border: 1px solid #ddd;

? ? background: red;

}

</style>

<body>

? ? <div class="box">

? ? ? ? <div class="box_child">1</div>

? ? ? ? <div class="box_child">2</div>

? ? ? ? <div class="box_child">3</div>

? ? </div>

</body>

</html>

結(jié)果:


child_box從開始位置對(duì)齊

如果是justify-content: flex-end;


child_box從結(jié)束位置對(duì)齊

如果是justify-content: center涣狗;


child_box居中排列谍婉。

如果是 justify-content: space-between;


child_box兩端對(duì)齊且主軸方向相隔距離相等

如果是justify-content: space-around镀钓;


每?jī)蓚€(gè)項(xiàng)目之間的間隔相等穗熬,上圖看不出來(lái),我們將box寬度設(shè)為600px丁溅,結(jié)果


2-4唤蔗,align-items定義子元素在交叉軸上如何對(duì)齊,可選值flex-start 窟赏, flex-end措译,center ,baseline 饰序, stretch。

列:

如果是align-items:flex-start;

<!DOCTYPE html>

<html lang="en">

<head>

? ? <meta charset="UTF-8">

? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">

? ? <meta http-equiv="X-UA-Compatible" content="ie=edge">

? ? <title>測(cè)試flexbox</title>

</head>

<style>

.box{

? ? display: flex;

? ? width: 300px;

? ? background: #000;

? ? padding: 20px;

? ? flex-direction: row;

? ? justify-content: space-around;

? ? align-items: flex-start

}

.box_child1{

? ? width: 50px;

? ? height: 50px;

? ? border: 1px solid #ddd;

? ? background: red;

}

.box_child2{

? ? width: 50px;

? ? height: 100px;

? ? border: 1px solid #ddd;

? ? background: red;

}

.box_child3{

? ? width: 50px;

? ? height: 50px;

? ? border: 1px solid #ddd;

? ? background: red;

}

.box_child4{

? ? width: 50px;

? ? height: 150px;

? ? border: 1px solid #ddd;

? ? background: red;

}

</style>

<body>

? ? <div class="box">

? ? ? ? <div class="box_child1">1</div>

? ? ? ? <div class="box_child2">2</div>

? ? ? ? <div class="box_child3">3</div>

? ? ? ? <div class="box_child4">4</div>

? ? </div>

</body>

</html>

結(jié)果:


可見(jiàn)child_box规哪,從起始位置左上角求豫,左往右排列,如果把上面的代碼box的 flex-direction: row;改為 flex-direction: row-reverse;結(jié)果:



child_box從右往左排列。

如果是box的 flex-direction: row;align-items: flex-end;


child_box從左往右排列且起始位置在左下角蝠嘉。

如果是box的align-items: center最疆;


從box的中部左往右排列,

另外

baseline定義子元素的第一行文字的基線對(duì)齊蚤告。

stretch定義如果子元素未設(shè)置高度或設(shè)為auto努酸,那么子元素的高度將占滿整個(gè)容器的高度。

2-5杜恰,align-content定義多根軸線的對(duì)齊方式获诈,如果項(xiàng)目只有一根軸線,該屬性無(wú)效心褐,可選flex-start舔涎, flex-end , center 逗爹, space-between 亡嫌,space-around ,stretch;

flex-start:與交叉軸的起點(diǎn)對(duì)齊掘而。

flex-end:與交叉軸的終點(diǎn)對(duì)齊挟冠。

center:與交叉軸的中點(diǎn)對(duì)齊。

space-between:與交叉軸兩端對(duì)齊袍睡,軸線之間的間隔平均分布知染。

space-around:每根軸線兩側(cè)的間隔都相等。所以女蜈,軸線之間的間隔比軸線與邊框的間隔大一倍持舆。

stretch(默認(rèn)值):軸線占滿整個(gè)交叉軸。


3伪窖,如果定義了flex布局逸寓,那么它的子元素可選擇屬性有以下幾種。

order定義子元素的排列順序數(shù)值越小排列越靠前覆山。

列:

<!DOCTYPE html>

<html lang="en">

<head>

? ? <meta charset="UTF-8">

? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">

? ? <meta http-equiv="X-UA-Compatible" content="ie=edge">

? ? <title>測(cè)試flexbox</title>

</head>

<style>

.box{

? ? display: flex;

? ? width: 400px;

? ? background: #000;

? ? padding: 20px;

? ? flex-direction: row;

? ? justify-content: flex-start;

? ? align-items: flex-start;

}

.box_child1{

? ? width: 50px;

? ? height: 50px;

? ? border: 1px solid #ddd;

? ? background: red;

? ? order: 1;

}

.box_child2{

? ? width: 50px;

? ? height: 100px;

? ? border: 1px solid #ddd;

? ? background: red;

? ? order: 0;

}

.box_child3{

? ? width: 50px;

? ? height: 50px;

? ? border: 1px solid #ddd;

? ? background: red;

? ? order: 2;

}

.box_child4{

? ? width: 50px;

? ? height: 150px;

? ? border: 1px solid #ddd;

? ? background: red;

? ? order: 2;

}

</style>

<body>

? ? <div class="box">

? ? ? ? <div class="box_child1">1</div>

? ? ? ? <div class="box_child2">2</div>

? ? ? ? <div class="box_child3">3</div>

? ? ? ? <div class="box_child4">4</div>

? ? </div>

</body>

</html>

結(jié)果:



flex-grow定義子元素的放大比例竹伸,將上面的元box_child1,box_child2,box_child3元素加上flex-grow:1,box_child4加上flex-grow:2;如果box有剩余空間那么box_child4占據(jù)的空間是其他的一倍

結(jié)果:



flex-shrink語(yǔ)flex-grow相反,是定義子元素縮小比例簇宽,如果box沒(méi)有剩余空間勋篓,那么定義縮小的元素就縮小。


flex-basis它定義了在分配多余空間之前魏割,子元素占據(jù)的主軸空間譬嚣,根據(jù)這個(gè)計(jì)算主軸是否有多余空間,默認(rèn)值為auto钞它,即項(xiàng)目的本來(lái)大小拜银。

我平常常用的flex殊鞭,其實(shí)是flex-grow, flex-shrink 和 flex-basis的簡(jiǎn)寫。

列:

<!DOCTYPE html>

<html lang="en">

<head>

? ? <meta charset="UTF-8">

? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">

? ? <meta http-equiv="X-UA-Compatible" content="ie=edge">

? ? <title>測(cè)試flexbox</title>

</head>

<style>

.box{

? ? display: flex;

? ? width: 400px;

? ? background: #000;

? ? padding: 20px;

? ? flex-direction: row;

? ? justify-content: flex-start;

? ? align-items: flex-start;

}

.box_child1{

? ? width: 50px;

? ? height: 50px;

? ? border: 1px solid #ddd;

? ? background: red;

}

.box_child2{

? ? flex: 1;

? ? height: 100px;

? ? border: 1px solid #ddd;

? ? background: red;

}

</style>

<body>

? ? <div class="box">

? ? ? ? <div class="box_child1">1</div>

? ? ? ? <div class="box_child2">2</div>

? ? </div>

</body>

</html>

結(jié)果:


所以flex:1就是寫了以下屬性

flex-grow: 1;

flex-shrink: 1;

flex-basis: 0%;


align-self定義子元素的對(duì)齊方式尼桶,如果跟父元素的方式一樣那么設(shè)置auto就行操灿,當(dāng)然如果不一樣可以選擇 flex-start, flex-end 泵督, center 趾盐, baseline , stretch小腊。設(shè)置這個(gè)屬性的結(jié)果跟在flexbox中設(shè)置align-item的結(jié)果一樣救鲤。當(dāng)你想讓子元素不一樣時(shí)就可以選擇這個(gè)屬性。

列:

<!DOCTYPE html>

<html lang="en">

<head>

? ? <meta charset="UTF-8">

? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">

? ? <meta http-equiv="X-UA-Compatible" content="ie=edge">

? ? <title>測(cè)試flexbox</title>

</head>

<style>

.box{

? ? display: flex;

? ? width: 400px;

? ? background: #000;

? ? padding: 20px;

? ? flex-direction: row;

? ? justify-content: flex-start;

? ? align-items: flex-start;

}

.box_child1{

? ? width: 50px;

? ? height: 50px;

? ? border: 1px solid #ddd;

? ? background: red;

}

.box_child2{

? ? width: 50px;

? ? height: 100px;

? ? border: 1px solid #ddd;

? ? background: red;

}

.box_child3{

? ? width: 50px;

? ? height: 50px;

? ? border: 1px solid #ddd;

? ? background: red;

? ? align-self: flex-end

}

.box_child4{

? ? width: 50px;

? ? height: 150px;

? ? border: 1px solid #ddd;

? ? background: red;

}

</style>

<body>

? ? <div class="box">

? ? ? ? <div class="box_child1">1</div>

? ? ? ? <div class="box_child2">2</div>

? ? ? ? <div class="box_child3">3</div>

? ? ? ? <div class="box_child4">4</div>

? ? </div>

</body>

</html>

結(jié)果:



相信大部分人面試的時(shí)候都遇到垂直水平居中的問(wèn)題溢豆,那么利用flex如何實(shí)現(xiàn),其實(shí)利用 justify-content: center;

? ? align-items: center;

列:

<!DOCTYPE html>

<html lang="en">

<head>

? ? <meta charset="UTF-8">

? ? <meta name="viewport" content="width=device-width, initial-scale=1.0">

? ? <meta http-equiv="X-UA-Compatible" content="ie=edge">

? ? <title>測(cè)試flexbox</title>

</head>

<style>

.box{

? ? display: flex;

? ? width: 400px;

? ? height: 400px;

? ? background: #000;

? ? padding: 20px;

? ? flex-direction: row;

? ? justify-content: center;

? ? align-items: center;

}

.box_child1{

? ? width: 50px;

? ? height: 50px;

? ? border: 1px solid #ddd;

? ? background: red;

}

</style>

<body>

? ? <div class="box">

? ? ? ? <div class="box_child1">1</div>

? ? </div>

</body>

</html>


結(jié)果:


flex布局之前我也覺(jué)得復(fù)雜蜒简,項(xiàng)目中用得少,當(dāng)用得多了漩仙,flex布局就越來(lái)越熟練搓茬,但是仍有不足,因此寫這篇文章队他,意在復(fù)習(xí)和鞏固flex布局的知識(shí)卷仑。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市麸折,隨后出現(xiàn)的幾起案子锡凝,更是在濱河造成了極大的恐慌,老刑警劉巖垢啼,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窜锯,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡芭析,警方通過(guò)查閱死者的電腦和手機(jī)锚扎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)馁启,“玉大人驾孔,你說(shuō)我怎么就攤上這事」吒恚” “怎么了翠勉?”我有些...
    開封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)霉颠。 經(jīng)常有香客問(wèn)我对碌,道長(zhǎng),這世上最難降的妖魔是什么蒿偎? 我笑而不...
    開封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任朽们,我火速辦了婚禮克伊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘华坦。我一直安慰自己,他們只是感情好不从,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開白布惜姐。 她就那樣靜靜地躺著,像睡著了一般椿息。 火紅的嫁衣襯著肌膚如雪歹袁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天寝优,我揣著相機(jī)與錄音条舔,去河邊找鬼。 笑死乏矾,一個(gè)胖子當(dāng)著我的面吹牛孟抗,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播钻心,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼凄硼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了捷沸?” 一聲冷哼從身側(cè)響起摊沉,我...
    開封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎痒给,沒(méi)想到半個(gè)月后说墨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡苍柏,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年尼斧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片序仙。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡唉工,死狀恐怖轩娶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤背镇,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站钝计,受9級(jí)特大地震影響茉帅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜宾添,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一船惨、第九天 我趴在偏房一處隱蔽的房頂上張望柜裸。 院中可真熱鬧,春花似錦粱锐、人聲如沸疙挺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)铐然。三九已至,卻和暖如春恶座,著一層夾襖步出監(jiān)牢的瞬間搀暑,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工跨琳, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留自点,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓脉让,卻偏偏與公主長(zhǎng)得像桂敛,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子侠鳄,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

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