首先明确一点,flex属性flex-growflex-shrinkflex-basis的缩写。

关于flex属性值为none、auto、数字等时的默认值,详见https://www.cnblogs.com/chris-oil/p/5430137.html

flex-grow:指定了容器剩余空间多余时候的分配规则,默认值是0,多余空间不分配。

flex-shrink:指定了容器剩余空间不足时候的分配规则,默认值是1,空间不足要分配。

flex-basis:则是指定了固定的分配数量,默认值是auto

接下来,将通过一个示例对以上3个属性做出介绍:

// 请实现如下问题...

范张,范鑫和范旭每人100万固定家产,范帅和范哥则各20万保底家产。如果范闲归西那天家产还有富余,范帅和范哥按照3:2比例分配;如果没有剩余财产,则范张,范鑫和范旭三位兄长按照2:1:1的比例给两人分别匀出20万保底家产。

HTML结构如下:

<div class="container"><item clas="zhang">范张</item><item clas="xin">范鑫</item><item clas="xu">范旭</item><item clas="shuai">范帅</item><item clas="ge">范哥</item>
</div>

根据题目初步分析:

当有家产富裕时,前3者 并不参与家产富裕部分的再分配(flex-grow均为默认值0), 只有后2者参与再分配(flex-grow值分别为3、2)。

同理,当有家产捉襟见肘时, 只有前3者要从各自分得的资产中 按比例抽取部分所得 给后2者(flex-shrink值分别为2、1、1),后2者并不需要抽取资产(flex-shrink均为0)。

CSS代码如下:

.container {/* 范闲:来,家产分配开始了~ */display: flex;
}
.zhang {/* 老大不会争夺多余财产,但是会在财产不足时候分出老二老三分出的2倍的财产,这是作为老大应有的姿态 */flex: 0 2 100px;
}
.xin,
.xu {/* 老二和老三不会争夺多余财产,但是会在财产不足时候分出部分财产,照应老四和老幺 这里也可以直接写成:flex: 100px*/flex: 0 1 100px;
}
.shuai {/* 老四会争夺多余财产,且会在财产不足时候分出财产,感谢哥哥们的照顾,不过我的保底家底也小 */flex: 3 0 20px;
}
.ge {/* 老五会争夺多余财产,不过比例比哥哥少一点,且会在财产不足时候分出财产,感谢哥哥们的照顾 */flex: 2 0 20px;
}

——————————————————————— 分界线 —————————————————————————————

我的总结:

此处以flex容器(container )的临界宽度(100+100+100+20+20),即340px进行分析。此时五个子元素中,前3个刚好均满足最大值100px,后2个也刚好均满足最小值20px。

当家族生意红火,假如container = 350px > 340px时,会在保证临界分配方案的前提下,将 多出的10px 财产以3:2的比例 二次再分配 给后2个子元素,最终的分配结果为(100+100+100+26+24)。

当家族生意江河日下,假如container = 300px < 340px时,此时无法实施临界分配方案。会先为前3个子元素平分总资产,之后三者 再 从各自资产中以2:1:1的比例抽出 共计40px(20+20),以保证满足后2个子元素。【经测试,如当container = 20px < 40px时,后2者同样都能各分到20px!但前3者也都因为包含内容所以占用宽度。五个子元素总宽度>20px,此时会有部分子元素从container 溢出!】

详见 张鑫旭老师的博客

——————————————————————— 分界线 —————————————————————————————

关于 flex-basis属性,比较复杂,经过参阅张鑫旭老师的博客,现总结以下几点:

1.在Flex布局中,请使用flex-basis代替width属性,二者不要同时使用。
2.在Flex布局中,子项设置width是没有直接效果的。width只是flex-basis为auto时候间接生效,其余时候使用优先级更高的flex-basis属性(可以理解为覆盖)。
3.flex子项元素尺寸还与元素内容自身尺寸有关,即使设置了flex-basis属性值。
4.flex-basis默认作用在content box上,IE11会忽略box-sizing。
5.flex-basis使用得当可以实现类似min-width/max-width的效果。

我希望一个列表中的每一项最小宽度是100像素,尽可能填满整个容器,该如何实现?

无需使用min-width属性,可以试试下面的 CSS代码:

by-zhangxinxu {display: flex;flex-wrap: wrap;
}
item-zxx {flex-basis: 100px;flex-grow: 1;
}

HTML代码:

<by-zhangxinxu><item-zxx>最小100px,总是填满容器。</item-zxx><item-zxx>最小100px,总是填满容器。</item-zxx><item-zxx>最小100px,总是填满容器。</item-zxx><item-zxx>最小100px,总是填满容器。</item-zxx>
</by-zhangxinxu>

结果:

弹性容器中 子元素的flex属性介绍相关推荐

  1. 如何在C ++中从容器中删除元素

    How to remove elements from container is a common C++ interview question, so you can earn some brown ...

  2. Element UI——布局容器el-container子元素强制上下排列

    问题描述 <el-container><content-header></content-header><dashboard-content></ ...

  3. STL 容器中的元素必须满足的条件

    STL中的容器.迭代器.算法都是模板,因此可以操作任何型别.不论是STL预先定义好的或用户自行定义的都可以.然而,由于某些加诸于元素身上的操作行为,某些需求条件也就相应出现了.STL容器元素必须满足以 ...

  4. 弹性盒子内容体居右对其_CSS怎么实现弹性盒中的元素居中对齐

    css实现元素对齐(居中对齐弹性盒的各项 元素),在我们网页设计中是较为常见的一个功能效果.我们可以通过css中的align-items等相关css属性来实现. 推荐参考:<CSS教程> ...

  5. C++ STL 程序员必须会之学会删除容器中的元素 带详细注释实例版本

    //本实例演示容器中各种删除操作的正确玩法 //涉及remove erase remove_if remove_copy unique等函数 #include <iostream> #in ...

  6. flex布局,子元素设置flex: 1和nowrap,内容长度超出盒子

    解决方法:子元素设置宽度即可 {flex: 1;width: 0; } // 或者 {flex: 1;min-width: 0 }

  7. vector容器中清空元素(但原来的元素还在)

    一:上码演示 1:清空元素但其原来的元素还在 #include<bits/stdc++.h> using namespace std; int main(){vector <int& ...

  8. (背)顺序容器的操作-向容器中插入元素详细总结

    现在总结如下表:yes表示支持,no表示不支持 代码实例如下: #include <iostream> #include <string> #include <vecto ...

  9. flex 换主轴后子元素占满_Chrome72 嵌套 flex 布局修改,你的网站可能会发生布局错乱...

    起源 2019 年 1 月 29 日,Chrome72 正式版(72.0.3626.81)发布,本次发布带来了一个改变,且没有在更新日志中提及,该改变导致某些网站发生了布局错乱.该改变主要针对的是嵌套 ...

  10. CSS3 Flex布局弹性容器的属性

    为了实现对弹性子元素的灵活控制,在弹性容器上定义了相关属性,通过这些属性来控制主轴的方向.子元素溢出后的行为.子元素的对齐方式等.这些属性见表 9‑2: 表 9-2 父元素属性 属性 说明 flex- ...

最新文章

  1. BugKuCTF WEB 输入密码查看flag
  2. C语言求在算术级数中找到缺少的数字(附完整源码)
  3. Net Present Value - NPV
  4. anaconda中怎么sh_【好工具】 深度学习炼丹,你怎么能少了这款工具!JupyterLab 远程访问指南...
  5. android 自定义菜单栏,GitHub - earthWo/AndroidBottomNavigation: android 底部菜单栏,自定义样式,自定义菜单数量,添加滚动动画和水波纹动画...
  6. okhttp3 模拟get、post(json参数传递,form表单提交)
  7. gitlable iphone_iPhone 12首批用户成“小白鼠”,“信号故障”躺枪者无数
  8. SpringBoot和JPA使用SQLServer2008数据库搭建后台的时候排序报错
  9. oracle sql2000,sql2000的代码改成oracle的
  10. creator html富文本_小程序之HTML富文本解析
  11. go语言暂停命令_命令 · Go语言中文文档
  12. 多种代码生成炫酷代码雨(推荐)
  13. Oracle使用shutdown命令后长时间无反应
  14. Java利用Set集合去重复
  15. ArangoDB——图遍历 Graph
  16. 谷歌命令行解析工具gflags的使用
  17. 2018年总结与2019的计划
  18. java读取Excel内容添加到list集合里面去
  19. [通信 组成架构]AP是什么 WLAN及无线网络的结构
  20. [渝粤教育] 江西师范大学 美术课程标准与教材研究 参考 资料

热门文章

  1. 区块链Baas平台强势来袭,助力企业快速搭建区块链落地项目
  2. 01 牛刀小试【PAT B1012】数字分类
  3. (八)RHEL系统之红帽8操作系统基础环境配置及软件安装
  4. 怎么在微云服务器找一个文件夹,用户怎样了解微云文件在哪里打开
  5. ims应用服务器,IMS应用
  6. 墨菲定律等十个比较重要的定律和法则
  7. 阿里云跨云迁移工具案例实践:腾讯云迁移到阿里云
  8. 什么是DNS的正向解析与反向解析?代码实现?
  9. mac10.9下eclipse的storm开发环境搭建
  10. 怎样刻录系统启动光盘