CSS 15分鐘快速掌握flex布局

學(xué)習(xí)最好的方法就是把你知道的告訴別人

flex布局在網(wǎng)頁布局應(yīng)用廣泛。優(yōu)點(diǎn):響應(yīng)式著瓶、使用簡(jiǎn)單、布局靈活啼县,廢話不多說材原,馬上開始搞定它。

/************ 初始代碼 *************/
<!-- html -->
<div class='container'>
  <div class='box1'></div>
  <div class='box2'></div>
  <div class='box3'></div>
</div>
<!-- css -->
.container {
  display:flex;
}
.box1 {
  width:100px;
  height:100px;
  background-color:red;
}
.box2 {
  width:100px;
  height:100px;
  background-color:yellow;
}
.box3 {
  width:100px;
  height:100px;
  background-color:green;
}

要點(diǎn)1:display:flex

給元素添加了display:flex季眷,那么該元素就會(huì)變成flex容器余蟹,這是上面代碼效果圖:

要點(diǎn)2:flex-direction

flex-direction設(shè)置父容器的排列方向,那么子元素就會(huì)以row(水平方向)或column(垂直方向)排列子刮。

flex-direction屬性:

  • row(默認(rèn)值)子元素按水平方向排列
  • column 子元素按垂直方向排列
  • row-reverse (子元素按row的相反順序排列并靠右)
  • column-reverse (子元素按column相反順序排列并靠底)
.container {
  display:flex;
  flex-direction:column;
}

上面代碼給父容器設(shè)置了flex-direction:column屬性威酒,那么子元素就會(huì)被以列的方式排列。

其他屬性自己分別試試哦

要點(diǎn)3:justify-content對(duì)齊元素

justify-content 使子元素沿主軸排列,當(dāng)flex-direction:row時(shí)兼搏,父容器的主軸就是水平方向的,當(dāng)flex-direction:column時(shí)沙郭,父容器的主軸就是垂直方向的佛呻。

justify-content屬性值:

  • center 讓子元素在父容器中沿主軸方向居中對(duì)齊,當(dāng)方向?yàn)樾袝r(shí),水平居中病线,當(dāng)方向?yàn)榱袝r(shí)吓著,垂直居中
  • flex-start 讓子元素在父容器中沿主軸方向靠頭放置
  • flex-end 讓子元素在父容器中沿主軸方向靠尾放置
  • space-between 讓頭子元素和尾子元素在父容器中沿主軸靠最兩端放置,中間各子元素間距均分
  • space-aroundspace-between相似送挑,頭尾子元素跟容器的邊界有一定間距绑莺,中間各子元素間距均分

這些概念是不是很抽象?沒關(guān)系看代碼和效果你就馬上能夠理解了惕耕。

主軸方向?yàn)樗椒较颍?/h3>
  1. center 讓子元素在父容器中沿主軸方向居中對(duì)齊,當(dāng)方向?yàn)樾袝r(shí)纺裁,水平居中,當(dāng)方向?yàn)榱袝r(shí)司澎,垂直居中
/* 子元素居中 */
.container {
  height:500px;
  display:flex;
  flex-direction:row;
  justify-content:center;
  background-color:gray;
}
justify-content:center
  1. flex-start 讓子元素在父容器中沿主軸方向靠頭放置
/* 子元素靠頭 */
.container {
  height:500px;
  display:flex;
  flex-direction:row;
  justify-content:flex-start;
  background-color:gray;
}
justify-content:flex-start
  1. flex-end 讓子元素在父容器中沿主軸方向靠尾放置
/* 子元素靠尾 */
.container {
  height:500px;
  display:flex;
  flex-direction:row;
  justify-content:flex-end;
  background-color:gray;
}
justify-content:flex-end
  1. space-between 讓頭子元素和尾子元素在父容器中沿主軸靠最兩端放置欺缘,中間各子元素間距均分
/* 首尾子元素靠邊 ,中間均勻分布*/
.container {
  height:500px;
  display:flex;
  flex-direction:row;
  justify-content:space-between;
  background-color:gray;
}
justify-content:space-between
  1. space-aroundspace-between相似挤安,頭尾子元素跟容器的邊界有一定間距谚殊,中間各子元素間距均分
/* 首尾子元素不靠邊 ,中間均勻分布*/
.container {
  height:500px;
  display:flex;
  flex-direction:row;
  justify-content:space-around;
  background-color:gray;
}
justify-content:space-around

主軸方向?yàn)榇怪狈较颍?/h3>
.container {
  height:500px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  background-color:gray;
}
justify-content:center
.container {
  height:500px;
  display:flex;
  flex-direction:column;
  justify-content:flex-start;
  background-color:gray;
}
justify-content:flex-start
.container {
  height:500px;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  background-color:gray;
}
justify-content:flex-end
.container {
  height:500px;
  display:flex;
  flex-direction:column;
  justify-content:space-between;
  background-color:gray;
}
justify-content:space-between
.container {
  height:500px;
  display:flex;
  flex-direction:column;
  justify-content:space-around;
  background-color:gray;
}
justify-content:space-around

要點(diǎn)4:align-items

與主軸垂直的叫交叉軸蛤铜,align-items表示子元素沿交叉軸排列嫩絮,row的交叉軸是垂直方向的,column的交叉軸是水平方向的围肥。

align-items的屬性:

  • center 子元素在交叉軸上居中排列剿干,當(dāng)方向?yàn)樾袝r(shí),元素垂直居中虐先,當(dāng)方向?yàn)榱袝r(shí)怨愤,元素水平居中
  • flex-start 從父容器頭部(最前端)開始放置
  • flex-end 從父容器尾部(最底部)開始放置
  • stretch 沿交叉軸方向拉伸項(xiàng)目,填滿flex容器(父容器)
  • baseline 各子元素沿文字基線對(duì)齊

下面請(qǐng)仔細(xì)看各個(gè)屬性的不同之處吧蛹批。

當(dāng)flex-direction:row時(shí)(交叉軸為垂直方向)

  1. center :子元素在交叉軸上居中排列撰洗,當(dāng)方向?yàn)樾袝r(shí),元素垂直居中腐芍,當(dāng)方向?yàn)榱袝r(shí)差导,元素水平居中
  .container {
  height:500px;
  display:flex;
  flex-direction:row;
  align-items: center;
  background-color:gray;
}
  1. flex-start:從父容器頭部(最前端)開始放置
.container {
  height:500px;
  display:flex;
  flex-direction:row;
  align-items:flex-start;
  background-color:gray;
}
align-items:flex-start
  1. flex-end:從父容器尾部(最底端)開始放置
.container {
  height:500px;
  display:flex;
  flex-direction:row;
  align-items:flex-end;
  background-color:gray;
}
  1. stretch:沿交叉軸方向拉伸項(xiàng)目,填滿flex容器(父容器)
.container {
  height:500px;
  display:flex;
  flex-direction:row;
  align-items:stretch;
  background-color:gray;
}
/*  */
.box1 {
  width:100px;
  background-color:red;
}
.box2 {
  width:100px;
  background-color:yellow;
}
.box3 {
  width:100px;
  background-color:green;
}
  1. baseline 各子元素沿文字基線對(duì)齊
.container {
  height:500px;
  display:flex;
  flex-direction:row;
  align-items:baseline;
  background-color:gray;
  text-align:center;
}
.box1 {
  width:100px;
  height:100px;
  font-size:30px;
  background-color:red;
}
.box2 {
  width:100px;
  height:100px;
  font-size:20px;
  background-color:yellow;
}
.box3 {
  width:100px;
  height:100px;
  background-color:green;
}

tips:如何利用justify-content(主軸) 和align-items(交叉軸)猪勇,讓子元素水平和垂直居中设褐。

請(qǐng)看代碼吧:

.container {
  height:500px;
  display:flex;
  justify-content:center; /*** 水平居中 ***/
  align-items:center;     /*** 垂直居中 ***/
  background-color:gray;
}
soeasy對(duì)吧!!助析!

要點(diǎn)5:flex-wrap

默認(rèn)flex容器會(huì)把自動(dòng)調(diào)整子元素的大小犀被,如果是方向?yàn)?code>row的話把它們?nèi)谝恍校ㄋ骄€)里面
使用flex-wrap 包裹一行或一列,可以使多出來的子元素移到新的行或新的列外冀。(只在水平方向有效果)

屬性值:

  • nowrap 默認(rèn)值
  • wrap 多余的移動(dòng)新的行中
  • wrap-reverse 跟wrap的方向顛倒
  1. nowrap 默認(rèn)值(不換號(hào))
.container {
  height:500px;
  display:flex;
  flex-wrap:nowrap;
  background-color:gray;
}
.box1 {
  width:50%;
  height:50%;
  background-color:red;
}
.box2 {
  width:50%;
  height:50%;
  background-color:yellow;
}
.box3 {
  width:50%;
  height:50%;
  background-color:green;
}
  1. wrap 多余的移動(dòng)到新的行中
.container {
  height:500px;
  display:flex;
  flex-wrap:wrap;
  background-color:gray;
}
  1. wrap-reversewrap的方向顛倒
.container {
  height:500px;
  display:flex;
  flex-wrap:wrap-reverse;
  background-color:gray;
}

要點(diǎn)6:flex-shrink

  • flex-shrink 見其名寡键,知其意,就知道它是用來收縮元素的雪隧,當(dāng)容器的大下西轩,小于元素的大小的時(shí)候,該元素就會(huì)被壓縮放小脑沿,比如藕畔,當(dāng)容器的寬度小于元素的寬度時(shí),元素就會(huì)被自動(dòng)壓縮庄拇。
  • flex-shrink它 接受的是number 類型的值注服。
  • number的值越大,該元素相比其他元素的被壓縮的更大丛忆,反之祠汇,壓縮更小,比如熄诡,A元素的flex-shrink:1可很,B元素的flex-shrink:2 ,那么B跟A相比就被壓縮2倍。
.container {
  height:500px;
  display:flex;
  background-color:gray;
}
.box1 {
  width:100%;
  height:50%;
  background-color:red;
  flex-shrink:1;
}
.box2 {
  width:100%;
  height:50%;
  background-color:yellow;
  flex-shrink:2;
}

要點(diǎn)7:flex-grow

flex-grow:與flex-shrink相反凰浮,它用來擴(kuò)展元素我抠。flex-shrink為容器較小時(shí),對(duì)元素進(jìn)行相應(yīng)調(diào)整袜茧,flex-grow為當(dāng)容器較大時(shí)菜拓,對(duì)元素進(jìn)行相應(yīng)調(diào)整

比如 A元素的flex-grow:1,B元素的flex-grow:2時(shí),那么B比A大2倍笛厦。

.container {
  height:500px;
  display:flex;
  background-color:gray;
}
.box1 {
  height:50%;
  background-color:red;
  flex-grow:1;
}
.box2 {
  height:50%;
  background-color:yellow;
  flex-grow:2;
}

要點(diǎn)8:flex-basic

flex-basic 用來設(shè)置當(dāng)元素使用了flex-shrinkflex-grow前的初始大小纳鼎。

flex-basic 接受的值px、em裳凸、%贱鄙、rem 等,auto的話姨谷,大小依賴于自身的內(nèi)容

.container {
  height:500px;
  display:flex;
  background-color:gray;
}
.box1 {
  height:50%;
  background-color:red;
  flex-basis:100px;
  flex-grow:1;
}
.box2 {
  height:50%;
  background-color:yellow;
  flex-basis:200px;
  flex-grow:5;
}

要點(diǎn)9:flex 屬性簡(jiǎn)寫

flex:1 2 30px; :表示把該元素設(shè)置為flex-grow: 1;逗宁、 flex-shrink: 2;flex-basis: 30px;

box1flex:3 3 100px;box2flex-grow:1 1 100px;
表示當(dāng)容器的大于200px 時(shí),box1 會(huì)被填充倍率為box23 倍梦湘,當(dāng)容器的小于200px 時(shí)瞎颗,它的壓縮倍率為box23 倍件甥。200px 為兩個(gè)元素的flex-basis的值之和。

.container {
  height:500px;
  display:flex;
  background-color:gray;
}
.box1 {
  height:50%;
  background-color:red;
  flex:3 3 100px;
}
.box2 {
  height:50%;
  background-color:yellow;
  flex-grow:1 1 100px;
}
大于200px時(shí)

要點(diǎn)10: order 給元素設(shè)置排列的順序

html里的元素默認(rèn)是從上往下排列哼拔,使用order可以更改它們的放置的順序引有,數(shù)值越小排在前面,接受負(fù)數(shù)倦逐。

.container {
  height:500px;
  display:flex;
  background-color:gray;
}
.box1 {
  width:100px;
  height:50%;
  background-color:red;
  order:1;
}
.box2 {
  width:100px;
  height:50%;
  background-color:yellow;
  order:-1;
}
黃色盒子被放置在紅色盒子前

擔(dān)心大家不能理解主軸和交叉軸轿曙,特附上了兩張圖方便理解。


當(dāng)你理解了主軸和交叉軸僻孝,你就能很快能分清楚當(dāng)容器為行或列的方向時(shí),能迅速對(duì)元素設(shè)置你想要的效果了守谓,沒能馬上理解也沒關(guān)系穿铆,應(yīng)用多了,再回來回顧復(fù)習(xí)斋荞,相信很快就能掌握荞雏。

flex布局到這里就結(jié)束了!F侥稹凤优!,有木有很簡(jiǎn)單蜈彼,你學(xué)會(huì)了嗎筑辨?

最后補(bǔ)一條,看到的永遠(yuǎn)是別人的幸逆,做了才是自己的棍辕。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市还绘,隨后出現(xiàn)的幾起案子楚昭,更是在濱河造成了極大的恐慌,老刑警劉巖拍顷,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抚太,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡昔案,警方通過查閱死者的電腦和手機(jī)尿贫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爱沟,“玉大人帅霜,你說我怎么就攤上這事『羯欤” “怎么了身冀?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵钝尸,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我搂根,道長(zhǎng)珍促,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任剩愧,我火速辦了婚禮猪叙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘仁卷。我一直安慰自己穴翩,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布锦积。 她就那樣靜靜地躺著芒帕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪丰介。 梳的紋絲不亂的頭發(fā)上背蟆,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音哮幢,去河邊找鬼带膀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛橙垢,可吹牛的內(nèi)容都是我干的垛叨。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼柜某,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼点额!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起莺琳,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤还棱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后惭等,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體珍手,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年辞做,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了琳要。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡秤茅,死狀恐怖稚补,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情框喳,我是刑警寧澤课幕,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布厦坛,位于F島的核電站,受9級(jí)特大地震影響乍惊,放射性物質(zhì)發(fā)生泄漏杜秸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一润绎、第九天 我趴在偏房一處隱蔽的房頂上張望撬碟。 院中可真熱鬧,春花似錦莉撇、人聲如沸呢蛤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽顾稀。三九已至,卻和暖如春坝撑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背粮揉。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國打工巡李, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扶认。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓侨拦,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親辐宾。 傳聞我的和親對(duì)象是個(gè)殘疾皇子狱从,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

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

  • H5移動(dòng)端知識(shí)點(diǎn)總結(jié) 閱讀目錄 移動(dòng)開發(fā)基本知識(shí)點(diǎn) calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,436評(píng)論 0 26
  • 移動(dòng)開發(fā)基本知識(shí)點(diǎn) 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,460評(píng)論 0 6
  • 一、Flex 布局是什么叠纹? CSS3引入了一種新的布局模式——Flexbox布局季研,即伸縮盒模型布局(Flexibl...
    俠客有情劍無情QAQ閱讀 5,733評(píng)論 7 94
  • 前言 FlexBox是css3的一種新的布局方式,天生為解決布局問題而存在的它誉察,比起傳統(tǒng)的布局方式与涡,我們使用Fle...
    zevei閱讀 1,416評(píng)論 23 3
  • 我噴了新買的香水,穿上了漂亮的裙子持偏,搭配了合適的鞋子驼卖。就這樣我也以為我做好了準(zhǔn)備。 在車?yán)锩婧韪眩f:“你做我女朋友...
    田柿子閱讀 190評(píng)論 1 0