总结:
- 一个元素不设置或者flex-grow设置为0,默认是元素的宽度;
- 如果给一个或多个元素设置了非负的flex-grow值,父元素剩余的宽度(如果有)重新分配宽度,flex-grow的值代表分配到的宽度比例。
有点难理解,下面有例子解释说明。
- 可以设置任意非负数字(正小数、正整数、0),默认是0
- 当flex-container在main axis(主轴)方向上有剩余size(空间)时,flex-grow属性才增加宽度
三个宽度120px(3*120px=360px)的子元素放在一个宽度420px的父级元素中,父级元素使用flex布局
<div class="container">
<div class="item item1">120px</div>
<div class="item item2">120px</div>
<div class="item item3">120px</div>
</div>
.container {
display: flex;
width: 420px;
height: 200px;
}
.item {
width: 120px;
height: 120px;
}
三个item的flex-grow默认都是0,所以不会占用剩下的空间,还有60px剩余,如图1-1所示。
只给一个子元素设置flex-grow值
- 设置了正值flex-grow(可以是flex-grow:1、flex-grow:2)的那个子元素,会占满父元素剩余的空间。
- 其他子元素为默认值0,占原来自己的宽度
只要子元素添加了flex-grow正值,就重新分配父元素剩余空间的宽度,如图1-2、1-3所示。
给多个子元素设置flex-grow值
- 给设置了正值的多个子元素分配宽度
- 按照flex-grow的值按比例分配父元素剩余宽度
可以看到浏览器将父元素剩余的宽度按比例分配给了item2和item3
效果如图1-4所示
给每个子元素都添加flex-grow属性,只要是添加了flex-grow的都会按比例分配,效果如图1-5所示。父元素剩余的宽度是60px,所以给第一个子元素分配了30px、第二个子元素分配了20px、第三个子元素分配了10px。
总结:
- 一个元素不设置或者flex-shrink设置为1,默认会压缩元素的宽度;
- 如果给一个或多个元素设置了0的flex-shrink值,那些元素会按原宽度显示,宽度可以超过父元素。
下面有例子解释说明。
- 可以设置任意非负数字(正小数、正整数、0),默认值是1
- 当flex-items在main axis方向超过了flex container的size,flex-shrink属性才有效。item总共的宽度比容器大
三个宽度120px(3*120px=360px)的子元素放在一个宽度300px的父级元素中,父级元素使用flex布局
<div class="container">
<div class="item item1">120px</div>
<div class="item item2">120px</div>
<div class="item item3">120px</div>
</div>
虽然3个宽度为120px的子元素超过了父元素300px,但是默认会缩小每个子元素的值以放进三个子元素,如图2-1所示。
.container {
display: flex;
width: 300px;
height: 200px;
}
.item {
width: 120px;
height: 120px;
}
给一个子元素设置flex-shrink:0值,这个元素就会按原宽度显示,而其他元素就会被挤压
当设置flex-shrink:0的元素对应的宽度大于父元素的时候,会超出父元素宽度,如图2-3所示
应用的场景比较少,而且平常也很少去主动设置。默认值是auto。flex-basis用来设置flex items在main axis方向上的base size,与width有点类似,下面与其他大小设置的优先级进行比较
决定 flex items 最终 base size 的因素,从优先级高到低
- max-width\max-height\min-width\min-height
- flex-basis
- width\height
- 内容本身的 size
- 一个无单位数(<number>): 它会被当作flex:<number> 1 0 的值。flex-shrink的值被假定为1,即可以伸缩。flex-basis的值被假定为0,默认是没有宽度的。
- 一个有效的宽度(width)值: 它会被当作 <flex-basis>的值。
- 关键字none,auto或initial.
下面的内容不好理解,可以只记住结论:
在给一个或多个子元素设置了flex:<number>后,会将那个子元素或者那些子元素的宽度+父元素剩余的宽度按比例重新分配。
举例说明1:一个item设置flex值
三个宽度120px(3*120px=360px)的子元素放在一个宽度420px的父级元素中,父级元素使用flex布局 ,如图4-1所示。
<div class="container">
<div class="item item1">120px</div>
<div class="item item2">120px </div>
<div class="item item3">120px </div>
</div>
.container {
display: flex;
width: 420px;
height: 200px;
}
.item {
width: 120px;
height: 120px;
}
给item3设置了flex:1后,item3的宽度加上黄色部分(父元素剩余的宽度)会重新分配宽度。如图4-2所示。
因为flex:1;会被当做flex:1 1 0;
flex-basis暂定为0,没有宽度,flex-grow又设置为1,就占用了全部的宽度。如图4-3所示
举例说明2:多个item设置flex值
给item1设置flex:1; 给item2设置flex:2 ; 给item3设置flex:3
flex:flex-grow flex-shrink flex-basis;
给元素设置flex单值,flex-basis为0,没有宽度。在本例子中设置了三个子元素,所以整个父元素都没有宽度。又设定了flex-grow,子元素按比例分配剩下的宽度。
双值语法:
第一个值必须为一个无单位数,并且它会被当作 <flex-grow> 的值。
第二个值必须为以下之一:
- 一个无单位数:它会被当作 <flex-shrink> 的值。
- 一个有效的宽度值: 它会被当作 <flex-basis> 的值。
- 第一个值必须为一个无单位数,并且它会被当作 <flex-grow> 的值。
- 第二个值必须为一个无单位数,并且它会被当作 <flex-shrink> 的值。
- 第三个值必须为一个有效的宽度值, 并且它会被当作 <flex-basis> 的值。
文章浏览阅读1.1w次,点赞7次,收藏34次。vue-grid-layout的使用、实例、遇到的问题和解决方案_vue-grid-layout
文章浏览阅读218次。然后连接一个数据源,就会在下面自动产生一个添加附件的组件。把这个控件复制粘贴到页面里,就可以单独使用来上传了。插入一个“编辑”窗体。_powerapps点击按钮上传附件
文章浏览阅读264次。(1) Abstraction (抽象)(2) Polymorphism (多态)(3) Inheritance (继承)(4) Encapsulation (封装)_"object(cnofd[\"ofdrender\"])十条"
文章浏览阅读133次。删除node_modules,重新npm install看是否成功。在 package.json 文件中的 scripts 中加入。修改你的第三方库的bug等。然后目录会多出一个目录文件。_修改 node_modules
文章浏览阅读883次。【代码】【】kali--password:su的 Authentication failure问题,&sudo passwd root输入密码时Sorry, try again._password: su: authentication failure
文章浏览阅读1w次,点赞13次,收藏97次。整理5个优秀的微信小程序开源项目。收集了微信小程序开发过程中会使用到的资料、问题以及第三方组件库。_微信小程序开源模板
文章浏览阅读128次。Centos7最简搭建NFS服务器_centos7 搭建nfs server
文章浏览阅读1.2k次,点赞2次,收藏3次。前言mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的解决了这个问题。..._mybaitis-plus ruledataobjectattributemapper' and 'com.picc.rule.management.d
文章浏览阅读325次。EECE 1080C / Programming for ECESummer 2022Laboratory 4: Global Functions PracticePlagiarism will not be tolerated:Topics covered:function creation and call statements (emphasis on global functions)Objective:To practice program development b_eece1080c
文章浏览阅读53次。被同机房早就1年前就学过的东西我现在才学,wtcl。设要求的数为\(x\)。设当前处理到第\(k\)个同余式,设\(M = LCM ^ {k - 1} _ {i - 1}\) ,前\(k - 1\)个的通解就是\(x + i * M\)。那么其实第\(k\)个来说,其实就是求一个\(y\)使得\(x + y * M ≡ a_k(mod b_k)\)转化一下就是\(y * M ...
文章浏览阅读1.3k次。首先,问题是如何出现的?晚上复查代码,发现一个activity没有调用自己的ondestroy方法我表示非常的费解,于是我检查了下代码。发现再finish代码之后接了如下代码finish();System.exit(0);//这就是罪魁祸首为什么这样写会出现问题System.exit(0);////看一下函数的原型public static void exit (int code)//Added ..._android 手动杀死app,activity不执行ondestroy
文章浏览阅读894次。Q: SylixOS 版权是什么形式, 是否分为<开发版税>和<运行时版税>.A: SylixOS 是开源并免费的操作系统, 支持 BSD/GPL 协议(GPL 版本暂未确定). 没有任何的运行时版税. 您可以用她来做任何 您喜欢做的项目. 也可以修改 SylixOS 的源代码, 不需要支付任何费用. 当然笔者希望您可以将使用 SylixOS 开发的项目 (不需要开源)或对 SylixOS 源码的修改及时告知笔者.需要指出: SylixOS 本身仅是笔者用来提升自己水平而开发的_select函数 导致堆栈溢出 sylixos