网站首页 > 技术文章 正文
上一篇我们讲解了, flex容器的属性, 如何定义主轴方向, 以及主轴\侧轴对齐方式
这篇讲解子元素的一些属性.
如何对子项目进行排序?
弹性盒模型第一次可以让我们方便的对元素进行排序
使用 order属性, 它的默认值是0
元素按照order顺序排列
如何定义子项目大小?
flex布局提供另外一个属性 flex-basis
它用来设定元素在主轴方向的大小
注意主轴可以是row方向, 也可以column方向
另外, 某个子元素, 可以单独设置跟其它子元素不一致的(侧轴)对齐方式.
最后, 要隆重的介绍flex-grow这个属性了
它叫做『剩余空间瓜分比例』
从图上可以看出, AB没有撑满flex容器, 如果希望AB调整大小撑满容器的话
我们需要加上flex-grow这个属性
.container {
display: flex;
width: 500px;
....
}
div:nth-child(1) {
width: 100px;
background-color: pink;
flex-grow: 1;
}
div:nth-child(2) {
width: 100px;
background-color: lightseagreen;
flex-grow: 1;
}
那么AB元素会按照1:1的比例把父元素剩余的空间瓜分掉, 效果如图
当然, 如果你希望B保持不变, 只有A变大的话, 你可以这样写
div:nth-child(1) {
background-color: pink;
flex-grow: 1;
}
div:nth-child(2) {
background-color: lightseagreen;
flex-grow: 0; /*默认值就是0, 其实不用写*/
}
我们也可以调整比例
div:nth-child(1) {
width:100px;
background-color: pink;
flex-grow: 2;
}
div:nth-child(2) {
width:100px;
background-color: lightseagreen;
flex-grow: 1;
}
AB按照2:1的比例瓜分了剩余空间
既然可以放大, 元素也能缩小
接下来介绍flex-shrink属性, 它叫做多余空间削减比例
当元素大小超出了flex父容器, 子元素可以按比例缩减.
但是这里的算法比刚才的flex-grow复杂了一些
我们先看一种简单的情况
.container{
display: flex;
flex-direction: row;
justify-content: flex-start;
box-shadow: 0 0 0 1px black;
height: 100px; width: 400px; /*父元素宽度为400*/
}
div:nth-child(1) {
width: 300px; /*子元素A宽度为300*/
background-color: pink;
flex-shrink: 1; /*多余空间削减比例为1, 默认值为1, 可以不写*/
}
div:nth-child(2) {
width: 200px; /*子元素B宽度为200*/
background-color: lightseagreen;
flex-shrink: 1; /*多余空间削减比例为1, 默认值为1, 可以不写*/
}
削减比例我们设置了1:1 , 那么实际结果呢?
从图中的实际效果来看,
A元素削减了60个像素
B元素削减了40个像素
这并不是1:1啊, 这是3:2啊
这个3:2又是怎么来的呢?
其实, 它就是AB元素的原始比例大小
所以, 在削减比例上, 元素还会受到原始大小比例的影响 总结一个公式如下: 子元素的削减比例===原始大小比例 X flex-shrink比例
那么, 根据我们所得的公式, 如果我们想让上面的例子当中
AB元素都削减一样的大小该如何做呢?
答案就是:
div:nth-child(1) {
width: 300px;
background-color: pink;
flex-shrink: 2;
}
div:nth-child(2) {
width: 200px;
background-color: lightseagreen;
flex-shrink: 3;
}
最终效果:
让我们来总结一下
项目的属性(添加在子元素身上的属性)
- Order属性
order属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。
.item {
order: <integer>;
}
- flex-basis属性
flex-basis属性定义了在分配多余空间之前,项目占据的主轴空间(main size)。
.item {
flex-basis: <length> | auto; /* default auto */
}
- align-self属性
align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承父元素的align-items属性,如果没有父元素,则等同于stretch。
.item {
align-self: auto | flex-start | flex-end | center | baseline | stretch;
}
- flex-grow属性
flex-grow属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
.item {
flex-grow: <number>; /* default 0 */
}
- flex-shrink属性
flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
.item {
flex-shrink: <number>; /* default 1 */
}
- 上一篇: 用python重新定义「2019十大网络流行语」
- 下一篇: 网页内容监控工具 网页监控软件 有哪些
猜你喜欢
- 2024-11-09 「项目实战」.作家管理系统之Web应用(四)
- 2024-11-09 jQuery 单引号和双引号区别 js单双引号转义
- 2024-11-09 jQuery的DOM操作 jquery对象和dom对象
- 2024-11-09 CSS2与CSS3中常用的伪类汇总大全 css伪类hover
- 2024-11-09 自动化测试:Selenium八大元素定位简单介绍
- 2024-11-09 想让AI 驱动 UI 测试?大佬推荐这个自动化工具!
- 2024-11-09 CSS怎么选择除了第一个子元素外的其余同级子元素
- 2024-11-09 js函数--倒计时模块+无缝滚动 js实现倒计时60秒的简单代码
- 2024-11-09 Web前端开发-CSS中伪类和伪元素 css3伪类和伪元素
- 2024-11-09 CSS 中的最后一个子级选择器与最后一个类型选择器
- 标签列表
-
- content-disposition (47)
- nth-child (56)
- math.pow (44)
- 原型和原型链 (63)
- canvas mdn (36)
- css @media (49)
- promise mdn (39)
- readasdataurl (52)
- if-modified-since (49)
- css ::after (50)
- border-image-slice (40)
- flex mdn (37)
- .join (41)
- function.apply (60)
- input type number (64)
- weakmap (62)
- js arguments (45)
- js delete方法 (61)
- blob type (44)
- math.max.apply (51)
- js (44)
- firefox 3 (47)
- cssbox-sizing (52)
- js删除 (49)
- js for continue (56)
- 最新留言
-