【前端】03 - 移動web開發(fā) - flex布局(彈性布局)

1.傳統(tǒng)布局和flex布局對比

1.1 傳統(tǒng)布局

  1. 兼容性好。

  2. 布局繁瑣凌受。

  3. 局限性,不能再移動端很好的布局思杯。

1.2 flex 布局

  1. 操作方便胜蛉,布局極其簡單,移動端使用比較廣泛色乾。

  2. pc端瀏覽器支持情況比較差誊册。

  3. IE11或更低版本不支持flex或僅支持部分。

1.3 建議

  1. 如果是pc端頁面布局暖璧,還是采用傳統(tǒng)方式案怯。

  2. 如果是移動端或者是不考慮兼容的pc則采用flex

2. flex布局原理

  1. flexflexible Box 的縮寫澎办,意為"彈性布局"嘲碱,用來為盒狀模型提供最大的靈活性,任何一個容器都可以指定為 flex 布局局蚀。

  2. 當我們?yōu)楦负凶釉O為 flex 布局以后麦锯,子元素的 floatclearvertical-align 屬性將失效琅绅。

  3. flex 布局又叫伸縮布局 扶欣、彈性布局 、伸縮盒布局 千扶、彈性盒布局 料祠。

  4. 采用 Flex 布局的元素,稱為Flex 容器(flex container)县貌,簡稱"容器"术陶。它的所有子元素自動成為容器成員,稱為 Flex 項目(flex item)煤痕,簡稱"項目"梧宫。

  5. 總結:就是通過給父盒子添加flex屬性接谨,來控制子盒子的位置和排列方式。

3. 父項常見屬性

這些屬性是和 display:flex;寫在一起的都是寫在父盒子中塘匣。

  1. flex-direction:設置主軸的方向脓豪。

  2. justify-content:設置主軸上的子元素排列方式。

  3. flex-wrap:設置子元素是否換行 忌卤。

  4. align-content:設置側軸上的子元素的排列方式(多行)扫夜。

  5. align-items:設置側軸上的子元素排列方式(單行)。

  6. flex-flow:復合屬性驰徊,相當于同時設置了flex-directionflex-wrap笤闯。

3.1 flex-direction設置主軸的方向

  1. flex 布局中,是分為主軸和側軸兩個方向棍厂,同樣的叫法有 : 行和列颗味、x 軸和y 軸。

  2. 默認主軸方向就是x 軸方向牺弹,水平向右浦马。

  3. 默認側軸方向就是 y 軸方向,水平向下张漂。

flex-direction`設置主軸的方向
  1. 注意: 主軸和側軸是會變化的晶默,就看 flex-direction 設置誰為主軸,剩下的就是側軸航攒。而我們的子元素是跟著主軸來排列的磺陡。
flex-direction設置誰為主軸

3.2 justify-content設置主軸上的子元素排列方式

justify-content 設置主軸上的子元素排列方式

3.3 flex-wrap設置是否換行

  1. 默認情況下,項目都排在一條線(又稱”軸線”)上漠畜。flex-wrap 屬性定義仅政,flex布局中默認是不換行的。

  2. nowrap 不換行盆驹。

  3. wrap換行。

3.4 align-items 設置側軸上的子元素排列方式(單行 )

  1. 該屬性是控制子項在側軸(默認是y軸)上的排列方式 在子項為單項(單行)的時候使用滩愁。

  2. flex-start從頭部開始躯喇。

  3. flex-end 從尾部開始。

  4. center居中顯示硝枉。

  5. stretch 拉伸廉丽。

3.5 align-content 設置側軸上的子元素的排列方式(多行)

  1. 設置子項在側軸上的排列方式 并且只能用于子項出現(xiàn) 換行 的情況(多行),在單行下是沒有效果的妻味。
align-content 設置側軸上的子元素的排列方式(多行)

3.6 align-contentalign-items 區(qū)別

  1. align-items 適用于單行情況下正压, 只有上對齊、下對齊责球、居中和 拉伸焦履。

  2. align-content 適應于換行(多行)的情況下(單行情況下無效)拓劝, 可以設置 上對齊、下對齊嘉裤、居中郑临、拉伸以及平均分配剩余空間等屬性值。

  3. 總結就是單行找 align-items 多行找 align-content 屑宠。

3.7 flex-flow 屬性是 flex-directionflex-wrap 屬性的復合屬性

  flex-flow:row wrap;

4. flex 布局子項常見屬性

  1. flex 子項目占的份數(shù)厢洞。

  2. align-self 控制子項自己在側軸的排列方式。

  3. order 屬性定義子項的排列順序(前后順序)典奉。

4.1 flex 屬性(重要)

  1. flex 屬性定義子項目分配剩余空間躺翻,用flex來表示占多少份數(shù)。

  2. 案例演示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no"
          ,maximum-scale=1.0,minimum-scale=1.0>
    <title>flex子項常見的屬性</title>

    <style>

        em,
        i {
            /* 去除斜體 */
            font-style: normal;
        }

        /* 首尾固定寬度 中間為剩余的所有空間 */
        div {
            display: flex;
            width: 60%;
            height: 150px;
            margin: 100px auto;
            background-color: pink;
        }

        div span:first-child,
        div span:last-child {
            width: 99px;
            background-color: skyblue;
        }

        div span:nth-child(2) {
            flex: 1;
        }

        /* 三等分 */
        p {
            display: flex;
            width: 60%;
            height: 150px;
            margin: 100px auto;
            background-color: aqua;
        }

        p span {
            flex: 1;
        }

        p span:nth-child(1) {
            background-color: #FF8329;
        }

        p span:nth-child(2) {
            background-color: #FF930A;
        }

        p span:nth-child(3) {
            background-color: #c6ff1d;
        }

        div em:nth-child(1) {
            flex: 1;
            background-color: #FF8329;
        }

        div em:nth-child(2) {
            flex: 2;
            background-color: #ff7815;
        }

        div em:nth-child(3) {
            flex: 3;
            background-color: #ff6507;
        }

        .block_div {
            width: 900px;
            background-color: pink;
        }

        div i {
            display: block;
        }

        div i:nth-child(1) {
            width: 100px;
            background-color: #ff974c;
        }

        div i:nth-child(2) {
            width: 300px;
            background-color: #ff8031;
        }

        div i:nth-child(3) {
            width: 500px;
            background-color: #ff4c00;
        }
    </style>

</head>
<body>

<!-- 兩端寬度固定 剩余的中間平分 -->
<div>
    <span>1</span>
    <span>2</span>
    <span>3</span>
</div>

<!-- 進行三等分 -->
<p>
    <span>1</span>
    <span>2</span>
    <span>3</span>
</p>

<div>
    <em>1</em>
    <em>2</em>
    <em>3</em>
</div>

<!-- 不使用flex -->
<div class="block_div">
    <i>1</i>
    <i>2</i>
    <i>3</i>
</div>

</body>
</html>
案例結果

4.2 align-self控制子項自己在側軸上的排列方式

  1. align-self屬性允許單個項目有與其他項目不一樣的對齊方式卫玖,可覆蓋 align-items 屬性公你。

  2. 默認值為auto,表示繼承父元素的 align-items 屬性骇笔,如果沒有父元素省店,則等同于 stretch

  3. 案例演示 :

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0,user-scalable=no"
          ,maximum-scale=1.0,minimum-scale=1.0>
    <title>align-self和order</title>

    <style>

        div {
            display: flex;
            width: 80%;
            height: 500px;
            background-color: pink;
            /* 這會將三個盒子一起下移 */
            /*align-items: flex-end;*/
        }

        div span {
            width: 100px;
            height: 100px;
            background-color: aqua;
            margin: 10px;
        }

        div span:nth-child(1) {
            align-self: flex-end;
        }

        div span:nth-child(3) {
            align-self: flex-end;
        }

        /* 可以使用order 交換盒子之間的順序 */
        div span:nth-child(2) {
            order: 3;
        }

    </style>
</head>
<body>

<div>
    <span>1</span>
    <span>2</span>
    <span>3</span>
</div>

</body>
</html>

4.3 order 屬性定義項目的排列順序

  1. 數(shù)值越小笨触,排列越靠前懦傍,默認為0。

  2. 注意:和 z-index 不一樣芦劣。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末粗俱,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子虚吟,更是在濱河造成了極大的恐慌寸认,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件串慰,死亡現(xiàn)場離奇詭異偏塞,居然都是意外死亡,警方通過查閱死者的電腦和手機邦鲫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門灸叼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人庆捺,你說我怎么就攤上這事古今。” “怎么了滔以?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵捉腥,是天一觀的道長。 經常有香客問我你画,道長抵碟,這世上最難降的妖魔是什么桃漾? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮立磁,結果婚禮上呈队,老公的妹妹穿的比我還像新娘。我一直安慰自己唱歧,他們只是感情好宪摧,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著颅崩,像睡著了一般几于。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上沿后,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天沿彭,我揣著相機與錄音,去河邊找鬼尖滚。 笑死喉刘,一個胖子當著我的面吹牛,可吹牛的內容都是我干的漆弄。 我是一名探鬼主播睦裳,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼撼唾!你這毒婦竟也來了廉邑?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤倒谷,失蹤者是張志新(化名)和其女友劉穎蛛蒙,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體渤愁,經...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡牵祟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了抖格。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片课舍。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖他挎,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情捡需,我是刑警寧澤办桨,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站站辉,受9級特大地震影響呢撞,放射性物質發(fā)生泄漏损姜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一殊霞、第九天 我趴在偏房一處隱蔽的房頂上張望摧阅。 院中可真熱鬧,春花似錦绷蹲、人聲如沸棒卷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽比规。三九已至,卻和暖如春拦英,著一層夾襖步出監(jiān)牢的瞬間蜒什,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工疤估, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留灾常,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓铃拇,卻偏偏與公主長得像钞瀑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子锚贱,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350