flex深度布局-子元素的尺寸计算

2020-01-07  本文已影响0人  阿古瓜

flex的属性的值是 flex-grow, flex-shrink, flex-basis的缩写

flex的属性的值是 flex-grow flex-shrink flex-basis的缩写,

<!DOCTYPE html>
<html lang="zh">
    <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>flex的深度尝试</title>
    </head>
    <body>
        
        <article class="f1">            
            <style type="text/css">
                .box { display: flex; width: 800px;}
                .box>div {height: 100px;}
                .box>div:nth-of-type(1) {background-color: blueviolet; flex: 2 1 0%; width: 140px;}
                .box>div:nth-of-type(2) {background-color: wheat;  flex: 2 1 auto;  width: 100px;}
                .box>div:nth-of-type(3) {background-color: cadetblue;  flex: 1 1 200px;}        
            </style>
            <h2>flex-basis是如何影响计算</h2>
            <section class="box">
                <div>开始块</div>
                <div>中间块</div>
                <div>尾部块</div>
            </section>  
        <!-- 
            主轴上父容器尺寸为800px大小;       
            子元素的总基准值是:0% + auto + 200px = 300px;(auto 对应取主尺寸即 100px)            
            故剩余空间为 800px - 300px = 500px;
            子元素放大系数之和为:2 + 2 + 1 = 5;(每份得500/5 = 100px;)
            项目最终宽度如下:       
                1.第一个元素为  0% +  100px * 2 = 200px;
                2.第二个元素为  auto + 100px * 2 = 100px + 200px = 300px;
                3.第三个元素为  200px + 100px = 300px; 
        -->
                        
        </article>

    </body>
</html>

flex-basis 规定的是子元素的基准值。所以是否溢出的计算与此属性息息相关。
flex-basis 规定的范围取决于 box-sizing。这里主要讨论以下 flex-basis 的取值情况:

上一篇下一篇

猜你喜欢

热点阅读