flex盒子里面元素linehight對高度的影響


那天,高高興興的測試flex屬性。大家都知道,當父盒子display:flex的時候,子盒子即使寬高和大於父盒子,也會由於flex的特性進行收縮;然而,在給父盒子加了flex-direction:column之后,居然出現了:

它們沒收縮!!!!!!

html:

<div class="father">
    <div class="box1">1</div>
    <div class="box2">2</div>
    <div class="box3">3</div>
    <div class="box4">4</div>
</div>

css(沒加flex-direction:column):

.father{
            width: 300px;
            height: 300px;
            background-color: pink;
            display: flex;
            margin: 100px auto;
} .box1,.box2,.box3,.box4{ width: 100px; height: 100px; line
-height: 100px; text-align: center; } .box1{ background-color: red; } .box2{ background-color: yellow; } .box3{ background-color: green; } .box4{ background-color: purple; }

再三測試,發現是行高的影響

又再三測試,總結出來了一些規律

 

在豎直方向上

  a.當盒子的行高和大於等於父盒子時候,行高最大的盒子的行高

    1.大於等於自身設定的高度,則高度為設定的高度;剩下的父盒子高度則為父盒子原高度減去子盒子的高度;然后再其他盒子進行判斷。

    2.小於自身設定的高度,則高度為行高

  b.當盒子的行高和小於父盒子的時候,行高最大的盒子的行高    

    1.大於等於父盒子高/盒子個數且大於盒子設定的高度時,則該盒子高度為設定的高度,剩下的父盒子高度則為父盒子原高度減去子盒子的高度;然后再其他盒子進行判斷

    2.大於等於父盒子高/盒子個數且小於盒子設定的高度時,則該盒子的高度為行高,剩下的父盒子高度則為父盒子原高度減去子盒子的高度;然后再其他盒子進行判斷。

    3.小於父盒子高/盒子個數且小於盒子設定的高度時,則盒子們均分剩下的高度;

  如1:父盒高為300px,四個子盒子高為100px;行高分別設為120px,100px,45px,45px;總行高為120+100+45+45=310>300

    則:盒子1行高大於等於自身設定的高度(120>100),走a1路線,盒子1高度將為100px;父盒子剩下高度為300-100=200px;

      剩下三個盒子總行高為100+45+45=190<200px,父盒子高度/盒子個數=200/3 = 66px

      則盒子2行高大於等於自身設定的高度(100>=100),走b1路線,盒子2 高度將為100px;父盒子剩下的高度為200-100=100px

        剩下兩個盒子總行高為45+45=90<100px 父盒子高度/盒子個數=100/2=50px

          則盒子3,盒子4,均不符合行高小於父盒子高度/盒子個數(45<50),走b3路線,均分剩下的100px;每份50px;

          最終結果將如下

 

  如2:父盒高為300px,四個子盒子高為100px;行高分別設為80px,80px,80px,70px;總行高為80+80+80+70=310>300px;

    則:盒子1,2,3行高小於自身設定的高度(80<100),走a2路線,盒子1,2,3高度將為80px;父盒子剩下高度為300-240=60px;

      剩下盒子總行高為70px>60px,

        盒子4行高小於自身設定的高度(70<100),走a2路線,盒子4高度將為行高即60px,最候結果如下:

  

  如3:父盒高為300px,四個子盒子高為100px;行高分別設為57px,120px,30px,90px;總行高為57+120+30+90=297<300px;

    則:盒子2行高大於等於自身設定的高度(120>100),走b1路線,盒子1高度將為100px;父盒子剩下高度為300-100=200px;

      剩下三個盒子總行高為57+30+90=177<200px,父盒子高度/盒子個數=200/3 = 66px;

        則盒子4大於等於父盒子高/盒子個數且小於盒子設定的高度(100>90>66),走b2路線,盒子2 高度將為行高90px;父盒子剩下的高度為200-90=110px

          剩下兩個盒子總行高為57+30=87<110px,父盒子高/盒子個數=100/2=50px

            則盒子1大於等於父盒子高/盒子個數且小於盒子設定的高度(100>57>50),走b2路線,盒子1 高度將為行高57px;父盒子剩下的高度為110-57=53px

              剩下的盒子30<57/1,走b3路線,53分給盒子3

            最終結果為 57px,100px 53px,90px;如圖

 

 

    基本驗證無誤,歡迎大家測試。實際布局中應該盡量避免大數值的行高設置。(其實這個測試很無聊)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM