Flexbox初步學(xué)習(xí)

Flexbox簡(jiǎn)介

Flexbox Layout(Flexible Box)模塊估脆,W3C官方稱為CSS彈性盒子布局蝙斜,是在CSS3中定義的一種新的布局模式。Flexbox可以控制在容器內(nèi)的子元素的對(duì)齊方式、排列方式以及排序順序,即使其子元素的尺寸是未知或者動(dòng)態(tài)的情況下巍杈。彈性容器的主要特點(diǎn)就是能夠調(diào)整其子元素的寬度或者高度以使其能在不同分辨率的屏幕下能用最好的方式去填充可用空間。

Flexbox模型

Paste_Image.png

上圖為flexbox的模型扛伍。對(duì)于一個(gè)flexbox筷畦,有以下幾點(diǎn)基本點(diǎn)需要關(guān)注:

  1. flex-container:flex容器。
  2. flex-item:flex元素刺洒。需要注意的是鳖宾,flex-item是相對(duì)flex-container的直接子元素,flex-item本身也可以成為其內(nèi)部元素的flex-container逆航。
  3. main axis:主軸鼎文,默認(rèn)為橫向且從左到右。
  4. cross axis:縱軸因俐,默認(rèn)為縱向且從上到下拇惋。
  5. main size:flex-item在主軸上的尺寸周偎。
  6. cross size:flex-item在縱軸上的尺寸。

接下來將以代碼演示的方式來初步學(xué)習(xí)flexbox蚤假。

Flexbox屬性

  • Flex-container
    對(duì)于容器而言栏饮,首先我們要開啟flexbox。
    現(xiàn)在有這樣一段HTML代碼:
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>flex</title>
</head>
<body>
    <div class="box">
      <div class="box1">1</div>
      <div class="box1">2</div>
      <div class="box1">3</div>
      <div class="box1">4</div>
  </div>
</body>
</html>

接下來磷仰,我們來為box開啟flexbox(為了易于表現(xiàn),我們來加上一些樣式)境蔼。

.box {
    background:lightgray;
    display:flex;
}
.box1 {
    width:100px;
    height:100px;
    border:1px solid red;
}

能夠發(fā)現(xiàn)的是灶平,當(dāng)容器成為flexbox后,flex-item立刻呈現(xiàn)了一個(gè)樣式箍土,如圖

Paste_Image.png

原本應(yīng)該縱向塊狀排列的box1形成了類似float:left的顯示效果逢享,同時(shí)容器的高度也未塌陷,不免贊嘆這個(gè)屬性如此優(yōu)雅吴藻。接下來我們來看對(duì)于一個(gè)flex-container瞒爬,有怎樣的屬性可以使用。
1. flex-direction:
該屬性決定flex-item在容器內(nèi)的排列方向沟堡,有如下值:

.container{
        flex-direction:row|row-reverse|column|column-reverse;//默認(rèn)值為row
}
    - row:flex-item按主軸從左向右排列侧但。
row

- row-reverse:flex-item按主軸從右向左排列。


row-reverse

- column:flex-item按縱軸從上到下排列航罗。


column

- column-reverse:flex-item按縱軸從上到下排列禀横。
column-reverse

2. flex-wrap:

該屬性決定flex-item在容器內(nèi)的換行方式,有如下值:

.container {
          flex-wrap:nowrap|wrap|wrap-reverse;//no-wrap為默認(rèn)值
}

下面都以flex-direction:row下演示粥血,其他顯示方向均類似柏锄。
- nowrap:不允許換行,flex-item會(huì)自適應(yīng)縮小寬度复亏。

nowrap

- wrap:允許換行趾娃,flex-item以設(shè)定的寬度排列,換行后從左下方繼續(xù)排列缔御。
wrap

- wrap-reverse:允許換行抬闷,flex-item以設(shè)定的寬度排列,換行后從左上方繼續(xù)排列刹淌。
wrap-reverse

3. flex-flow:
該屬性是flex-direction和flex-wrap的簡(jiǎn)寫饶氏。

.contianer{
          flex-flow: <flex-direction> || <flex-wrap>;//默認(rèn)值為row nowrap
}
4. justify-content:

該屬性決定flex-item的在容器內(nèi)橫軸上的對(duì)齊方式,有如下值:

.container {
          justify-content:flex-start|flex-end|center|space-between|space-round;//默認(rèn)值為flex-start
}

下面都以flex-flow:row wrap;演示有勾。
- flex-start:以主軸開始方向?qū)R疹启。

flex-start

- flex-end:以主軸結(jié)束方向?qū)R。(注意與row-reverse的區(qū)別)
flex-end

- center:以主軸中央對(duì)齊蔼卡。
center

- space-around:各flex-item等間隔對(duì)齊喊崖,和容器接觸的元素與容器距離為flex-item間的一半挣磨。簡(jiǎn)單來講,flex-item的左右margin相等荤懂,且均分了容器主軸空間茁裙。
space-around

- space-between:以主軸兩端對(duì)齊,flex-item間距相等节仿。
space-between

關(guān)于這個(gè)屬性晤锥,需要注意的是和flex-direction以及flex-wrap同時(shí)使用時(shí)會(huì)互相影響。
5. align-items:
類似于justify-content廊宪,該屬性是flex-item在容器內(nèi)縱軸上的對(duì)齊方式矾瘾。

.container {
            align-items:flex-start|flex-end|center|baseline|stretch;//stretch為默認(rèn)值
}
    - flex-start:以縱軸開始方向?qū)R。
flex-start

- flex-end:以縱軸結(jié)束方向?qū)R箭启。


flex-end

- center:以縱軸居中對(duì)齊壕翩。


center

- baseline:以第一行文字基線對(duì)齊。
baseline

這里我們?cè)?號(hào)盒子中使用p標(biāo)簽包裹了數(shù)字傅寡,由于p標(biāo)簽的自帶屬性放妈,數(shù)字上方呈現(xiàn)了一定空間,這樣能夠更清楚的表現(xiàn)baseline的對(duì)齊方式荐操。

- stretch:flex-item在縱軸方向填滿整個(gè)容器芜抒。(當(dāng)flex-item的高度固定時(shí),該屬性不生效)


stretch

這里我們?nèi)∠薴lex-item的固定高度淀零,將容器的高度設(shè)定為400px挽绩。
6. align-content:
該屬性設(shè)定當(dāng)多行對(duì)齊時(shí),所在行對(duì)應(yīng)縱軸的對(duì)齊方式驾中。
.container {
            align-content:flex-start|flex-end|center|stretch|space-between|space-around;//stretch為默認(rèn)值
}

這里為了便于表示唉堪,我們給容器設(shè)定了固定寬高為500px。
- flex-start:以縱軸開始方向?qū)R肩民。


flex-start

- flex-end:以縱軸結(jié)束方向?qū)R唠亚。


flex-end

- center:以縱軸居中對(duì)齊。
center

- stretch:縱軸方向填滿整個(gè)容器持痰。
stretch

這里我們?nèi)∠薴lex-item的高度以體現(xiàn)效果灶搜。
實(shí)際上,當(dāng)我們?yōu)閒lex-item加上固定高度就會(huì)發(fā)現(xiàn)工窍,該屬性是將容器高度等分割卖,將各行按等分線對(duì)齊。


stretch

- space-around:縱軸等間距對(duì)齊患雏。
space-around

- space-between:縱軸兩端對(duì)齊鹏溯。
space-between

注:之前我們所講到的主軸和縱軸,都是以默認(rèn)情況淹仑,也就是flex-direction:row情況下討論的丙挽。而當(dāng)flex-direction:columnflex-direction:column-reverse時(shí)肺孵,此時(shí)主軸變?yōu)榭v向,縱軸變?yōu)闄M向颜阐,所以其他屬性的表現(xiàn)會(huì)相應(yīng)變化平窘。

  • flex-item
    1. order:
      該屬性接收一個(gè)整數(shù)值,用來表示flex-item的先后順序凳怨,可使用負(fù)數(shù)瑰艘,默認(rèn)值為0。
.item {
  order:<integer>;
}

order

這里我們?yōu)樽詈笠粋€(gè)box添加了order:0猿棉,為其他box添加了order:1磅叛,結(jié)果時(shí)4號(hào)box移到第一位。

  1. flex-grow:
    該屬性接收一個(gè)非負(fù)數(shù)作為比例系數(shù)萨赁,決定該flex-item的放大倍數(shù),默認(rèn)值為0兆龙,即不放大杖爽。
.item {
  flex-grow:<number>
}
flex-grow

該條屬性最佳應(yīng)用為讓子元素等分容器空間,所以使用這條屬性時(shí)不建議為flex-item添加固定寬度紫皇。

  1. flex-shrink:
    該屬性接收一個(gè)非負(fù)數(shù)作為比例系數(shù)慰安,決定改flex-item的縮小倍速,默認(rèn)值為0聪铺,即不縮小化焕。
.item {
  flex-shrink:<number>
}

flex-shrink

這里我們?cè)O(shè)定容器寬度為500px,flex-item寬度為300px铃剔,4號(hào)boxflex-shrink:0撒桨,其他均為flex-shrink:1,顯而易見键兜,4號(hào)box未縮小凤类,寬度為300px,而其他盒子等比縮小普气,且大小相同谜疤。

  1. flex-basis:
    該屬性決定該flex-item的主軸占據(jù)空間,可以為設(shè)定值或auto现诀,默認(rèn)值為auto夷磕,即flex-item本來尺寸。
.item {
  flex-basis: <length> | auto; 

flex-basis

這里我們沒有為123號(hào)box添加寬度仔沿,4號(hào)boxflex-basis:100坐桩,可看到除了4號(hào)box寬度固定,其他box等分空間于未。

  1. flex:
    該屬性為flex-grow撕攒、flex-shrink陡鹃、flex-basis的簡(jiǎn)寫,默認(rèn)值為0 1 auto抖坪,后兩值為可選屬性萍鲸。
.item {
  flex: none | [ <'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}

該屬性有兩個(gè)快捷值,auto(1 1 auto)和none(0 0 auto)擦俐。

  1. align-self:
    該屬性用于設(shè)定某個(gè)flex-item對(duì)于縱軸的對(duì)齊方式脊阴,可覆蓋容器上的align-item屬性,默認(rèn)值為auto蚯瞧,即繼承容器的對(duì)齊方式嘿期。該屬性可能取6個(gè)值,除了auto埋合,其他都與align-items屬性完全一致备徐。
.item {
  align-self: auto | flex-start | flex-end | center | baseline | stretch;
}

為了不再贅述,以align-self:flex-end舉例:

flex-end

這里我們?yōu)槿萜魈砑恿?00px的高度甚颂,給4號(hào)box添加了align-self:flex-end蜜猾,4號(hào)box便脫離了隊(duì)伍到達(dá)了縱軸結(jié)束的位置。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子碧浊,更是在濱河造成了極大的恐慌,老刑警劉巖肩豁,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異辫呻,居然都是意外死亡清钥,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門印屁,熙熙樓的掌柜王于貴愁眉苦臉地迎上來循捺,“玉大人,你說我怎么就攤上這事雄人〈娱伲” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵础钠,是天一觀的道長(zhǎng)恰力。 經(jīng)常有香客問我,道長(zhǎng)旗吁,這世上最難降的妖魔是什么踩萎? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮很钓,結(jié)果婚禮上香府,老公的妹妹穿的比我還像新娘董栽。我一直安慰自己,他們只是感情好企孩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布锭碳。 她就那樣靜靜地躺著,像睡著了一般勿璃。 火紅的嫁衣襯著肌膚如雪擒抛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天补疑,我揣著相機(jī)與錄音歧沪,去河邊找鬼。 笑死莲组,一個(gè)胖子當(dāng)著我的面吹牛诊胞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锹杈,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼厢钧,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了嬉橙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤寥假,失蹤者是張志新(化名)和其女友劉穎市框,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體糕韧,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡枫振,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了萤彩。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片粪滤。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖雀扶,靈堂內(nèi)的尸體忽然破棺而出杖小,到底是詐尸還是另有隱情,我是刑警寧澤愚墓,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布予权,位于F島的核電站,受9級(jí)特大地震影響浪册,放射性物質(zhì)發(fā)生泄漏扫腺。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一村象、第九天 我趴在偏房一處隱蔽的房頂上張望笆环。 院中可真熱鬧攒至,春花似錦、人聲如沸躁劣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)习绢。三九已至渠抹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間闪萄,已是汗流浹背梧却。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留败去,地道東北人放航。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像圆裕,于是被迫代替她去往敵國(guó)和親广鳍。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

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