弹性容器中 子元素的flex属性介绍
首先明确一点,flex
属性是flex-grow
,flex-shrink
和flex-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属性介绍相关推荐
- 如何在C ++中从容器中删除元素
How to remove elements from container is a common C++ interview question, so you can earn some brown ...
- Element UI——布局容器el-container子元素强制上下排列
问题描述 <el-container><content-header></content-header><dashboard-content></ ...
- STL 容器中的元素必须满足的条件
STL中的容器.迭代器.算法都是模板,因此可以操作任何型别.不论是STL预先定义好的或用户自行定义的都可以.然而,由于某些加诸于元素身上的操作行为,某些需求条件也就相应出现了.STL容器元素必须满足以 ...
- 弹性盒子内容体居右对其_CSS怎么实现弹性盒中的元素居中对齐
css实现元素对齐(居中对齐弹性盒的各项 元素),在我们网页设计中是较为常见的一个功能效果.我们可以通过css中的align-items等相关css属性来实现. 推荐参考:<CSS教程> ...
- C++ STL 程序员必须会之学会删除容器中的元素 带详细注释实例版本
//本实例演示容器中各种删除操作的正确玩法 //涉及remove erase remove_if remove_copy unique等函数 #include <iostream> #in ...
- flex布局,子元素设置flex: 1和nowrap,内容长度超出盒子
解决方法:子元素设置宽度即可 {flex: 1;width: 0; } // 或者 {flex: 1;min-width: 0 }
- vector容器中清空元素(但原来的元素还在)
一:上码演示 1:清空元素但其原来的元素还在 #include<bits/stdc++.h> using namespace std; int main(){vector <int& ...
- (背)顺序容器的操作-向容器中插入元素详细总结
现在总结如下表:yes表示支持,no表示不支持 代码实例如下: #include <iostream> #include <string> #include <vecto ...
- flex 换主轴后子元素占满_Chrome72 嵌套 flex 布局修改,你的网站可能会发生布局错乱...
起源 2019 年 1 月 29 日,Chrome72 正式版(72.0.3626.81)发布,本次发布带来了一个改变,且没有在更新日志中提及,该改变导致某些网站发生了布局错乱.该改变主要针对的是嵌套 ...
- CSS3 Flex布局弹性容器的属性
为了实现对弹性子元素的灵活控制,在弹性容器上定义了相关属性,通过这些属性来控制主轴的方向.子元素溢出后的行为.子元素的对齐方式等.这些属性见表 9‑2: 表 9-2 父元素属性 属性 说明 flex- ...
最新文章
- 传说中的“智能袖套”:把柔性手机戴在手腕上
- 【ASP.NET】js动态生成的控件,在后台获取不到怎么办?
- 常见Java面试题 – 第二部分:equals与==
- 阿里云发布智能语音自学习平台,零基础训练人工智能模型
- python用动态规划求删除路径_Python | 动态规划求解TSP
- 4.namespace
- 微服务升级_SpringCloud Alibaba工作笔记0019---Nacos之服务配置中心
- 图解算法之排序算法(2)——选择排序
- Bitfinex推出ETH 2.0质押服务
- 数据可视化工具在教学中的意义
- Google 开发者大会纪念 T 恤赠送(全球限量)
- python 读取文件名列表_python 读取指定文件夹下所有文件名
- HenCoder自定义View学习整理
- .NET环境下基于RBAC的访问控制
- 消息事件管理(游戏人工智能编程案例精粹)
- ORA-1652: unable to extend temp segment by 128 in tablespace TEMP
- ZJ-笔记本风扇异响
- 线段树(segment tree),看这一篇就够了
- 万字用户画像标签体系建设分析指南!
- 【live2d】博客看板娘live2d!