在进行弹性处理之余,其实有些场景我们更希望元素尺寸固定,不需要进行弹性调整。设置元素尺寸除了width和height以外,flex还提供了一个flex-basis
属性。
flex-basis
设置的是元素在主轴上的初始尺寸,所谓的初始尺寸就是元素在flex-grow
和flex-shrink
生效前的尺寸。
首先以width为例进行比较。看下下面的例子。#container {display:flex;}
。
<div id="container"> <div>11111</div> <div>22222</div> </div>
width: 0 —— 完全没显示
flex-basis: 0 —— 根据内容撑开宽度
width: 非0;
flex-basis: 非0
—— 数值相同时两者等效
—— 同时设置,flex-basis优先级高
flex-basis为auto时,如设置了width则元素尺寸由width决定;没有设置则由内容决定
将主轴方向改为:上→下
此时主轴上的尺寸是元素的height
flex-basis == height
这个属性应该是最容易迷糊的一个,下面揭开它的真面目。
flex = flex-grow + flex-shrink + flex-basis
复合属性,前面说的三个属性的简写。
flex: 1
= flex: 1 1 0%
flex: 2
= flex: 2 1 0%
flex: auto
= flex: 1 1 auto;
flex: none
= flex: 0 0 auto;
// 常用于固定尺寸 不伸缩
其实可以归结于flex-basis:0
和flex-basis:auto
的区别。
flex-basis
是指定初始尺寸,当设置为0时(绝对弹性元素),此时相当于告诉flex-grow
和flex-shrink
在伸缩的时候不需要考虑我的尺寸;相反当设置为auto
时(相对弹性元素),此时则需要在伸缩时将元素尺寸纳入考虑。
因此从下图(转自W3C)可以看到绝对弹性元素如果flex-grow
值是一样的话,那么他们的尺寸一定是一样的。
下一篇:Flex 五、容器内如何对齐
作者:八戒先生
地址:安徽合肥高新区PBootMoBan模板网
电话:13355693937
邮箱:admin@pbootmoban.com
QQ:43171398
Copyright © 2018-现在 PbootMoBan All Rights Reserved. 免责声明:网站中图片均来源于网络,如有版权问题请联系删除!