flex弹性布局,如果子元素宽度之和大于或者小于父元素宽度,空间就会存在剩余和不够,flex默认不换行,除非设置flex-wrap,那么这种情况下,有两个重要的属性,flex-grow和flex-shrink.

flex-grow默认值为0,用于子元素的宽度之和小于父元素的宽度时分配剩余空间,假如父元素宽度为1000,三个子元素,div1宽度200,div2宽度300,div3宽度300;三个子元素都不设置flex-grow,那么浏览器默认不自动分配剩余空间,剩余空间超出;假如给div1设置flex-grow:1,那么剩余1000-200-300-300=200px全部分配给div1;其他的子元素div2和div3不参与分配,即不设置此属性就不参与分配。

所以如果要参与分配,就要给子元素添加flex-grow属性。如果按照1:1:1,那么剩余空间就分成3等份,每个子元素分1/3,也可以设置2:2:2或者3:3:3,,但是结果和1:1:1是一样的,都是平均分配,没有意义。如果按照2:3:1,那么剩余空间分成6等份,每个子元素按照2/6,3/6,1/6去分配。

flex-shrink和flex-grow相反,默认值为1,子元素宽度之和超出父元素宽度,那么每个子元素就要按比例缩小以适应父元素。这时候给子元素设置flex-grow不起作用。即使不给子元素设置flex-shrink,浏览器也会根据子元素在子元素宽度之和的占有比例去缩小每个子元素,假如

父元素宽度600,div1宽度200,div2宽度300,div3宽度300,超出父元素200+300+300-600=200,这200在默认情况下浏览器会按比例给每个子元素均分减少,默认比例怎么算呢?先算出每个div占所有div宽度之和多少,上面三个div之和为800,那么三个div所占比例为:

div1:200/800=0.25

div2:300/800=0.375

div3:300/800=0.375

那么超出的200就按照上面这个比例去分配,所有div1宽度要减少200*0.25=50,div2减少200*0.375=75,div3减少200*0.375=75;所以即使不给子元素添加flex-shrink,浏览器最后会把三个子元素宽度缩小到150,225,225;如果想自定义减小某个子元素宽度,就要给相应的div设置flex-shrink, 其他不缩小的设置flex-shrink:0;

对flex-grow和flex-shrink的深入理解的更多相关文章

  1. flex 1与flex auto

    flex意为"弹性布局" 这次主要探究的是flex:1与flex:auto的区别,flex是flex-grow, flex-shrink 和 flex-basis的简写,默认值为0 ...

  2. 杂项:flex (adobe flex)

    ylbtech-杂项:Flex (Adobe Flex) Flex指Adobe Flex,基于其专有的Macromedia Flash平台,它是涵盖了支持RIA(Rich Internet Appli ...

  3. flex:1和flex:auto详解

    flex:1和flex:auto详解 首先明确一点是, flex 是 flex-grow.flex-shrink.flex-basis的缩写. flex-grow属性定义项目的放大比例,默认为0,即如 ...

  4. flex html 用flex展示html

    1. 目的 flex展示html 可以保护网页内容 2. 参考 http://stackoverflow.com/questions/260270/display-html-in-an-actions ...

  5. 微信小程序开发之搞懂flex布局2——flex container

    容器的概念,是用来包含其它容器(container)和项目(item). flex container——flex容器 A flexbox layout is defined using the fl ...

  6. 微信小程序开发之搞懂flex布局3——Flex Item

    Flex Item flex容器的子元素就是这个容器的flex item. The direct children of a Flex Container (elements with display ...

  7. Flex外包公司——Flex案例展示

    Flex案例展示 做的mail系统:  http://gowebtop.com/webtop/ 在线购书网站  http://book.orzar.net/ eBay购物网站  http://www. ...

  8. [Flex+JAVA]建立Flex+java项目,并实现基本功能

    1新建JAVA WEB项目 新建后的web文件包截图 3添加Flex项目,右键,添加.更改项目类型,天剑Flex项目类型

  9. (转)Flex开发工具Flex Builder 3 下载及注册码

    本文转载自:http://blog.csdn.net/wlxtaking/article/details/5779762 Flex是通过java或者.net等非Flash途径,解释.mxml文件组织c ...

  10. 重新总结flex布局(flex,flex-direction,justify-content,align-items,flex-wrap,align-self)

    1.flex,主要就是按比例分配.(例如:两个div的flex:1,就大小相等) .box1{ flex:1; background-color: red; } .box2{ flex:1; back ...

随机推荐

  1. PowerShell自动部署网站—(2)、安装.Net Framework

    #$PSScriptRoot = "D:\Website":$PSScriptRoot 用于获取执行脚本所在的目录,但是PowerShell 2.0 不支持,需要人为赋值成绝对路径 ...

  2. UML统一建模语UML2和EnterpriseArchitect

    其实前面的UML统一建模语言(一)所描述的都是UML1的内容,现在咱们聊一聊UML2. UML2.x完全建立在UML1.x基础之上,大多数的UML1.x模型在UML2.x中都可用.但UML2.x在结构 ...

  3. POJ1144(割点入门题)

    Network Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 11378   Accepted: 5285 Descript ...

  4. sum(sum(abs(y))) 中 sum(sum())什么意思?

    >> y=[1 3;2 5] y =      1     3      2     5 >> sum(y) ans =      3     8 >> sum(s ...

  5. Spring入门第十二课

    Bean的配置方法 通过工厂方法(静态工厂方法&实例工厂方法),FactoryBean 通过调用静态工厂方法创建Bean 调用静态工厂方法创建Bean是将对象创建的过程封装到静态方法中,当客户 ...

  6. Working Experience - WPF 中 DataGrid 控件的应用

    问题: 添加控件后, 编辑单元格会出现异常 绑定 ItemsSource 属性后, 更新绑定对象的数据, UI 不刷新 如何显示控件中 ComboBox 类型 解决方法: 绑定 ItemsSource ...

  7. Dev Envirenment - Windows 10 && Visual Studio 2019 && OpenCV 4.1.0

    当每天用着 C# && Winform && VS 2010 && .Net Framework 4.0 && Halcon & ...

  8. 死磕 java同步系列之JMM(Java Memory Model)

    简介 Java内存模型是在硬件内存模型上的更高层的抽象,它屏蔽了各种硬件和操作系统访问的差异性,保证了Java程序在各种平台下对内存的访问都能达到一致的效果. 硬件内存模型 在正式讲解Java的内存模 ...

  9. yii2之目录解析

    /backend 1.assets\AppAsset.php2.config\main-local.php 注释14到17行3.controllers\SiteController -> act ...

  10. ps色彩混合

    http://tieba.baidu.com/p/2032536851?pn=1 HSB 这是一种颜色的表示方法:其中"H"表示色相,"S"表示饱和度,&quo ...