flex 布局下关于容器内成员 flex属性的理解

flex布局分为容器的设置和容器内成员的设置,容器的设置是管理成员的排列方式,也就是管理排列的方向和对齐的位置。成员的设置则是关于成员的大小和显示的位置(order)。

弹性布局,弹性布局,自然要提现他的弹性,所谓弹性也就是对空间的分配。成员设置中的flex属性,就是对于额外空间的管理。

flex可以设置三个值,第一个值必选,后两个可选。

flex的第一个值

可以用flex-grow单独设置,代表含义是对额外空间的占据量,所谓额外空间就是这一行多余的空间,有多余的空间这一属性才有用。默认值是0,意思就是即使有多余空间,它也不要。

举个列子

这就是默认的效果,如果给其中的一个设置任意一个正值,那它会把所有额外空间占掉;如果给多个成员设置正值,那么他们会根据正值的大小分配,比如值一个为1,一个为2,那么额外空间就会分成三份,给1的一份,给2的两份。

首先将二号设为1,如图

如果将二号设为1,三号设为2,如图

有人会把flex-grow的值理解为总长度,这是个误解,它实质是对额外空间的分配。

flex的第二个值

可以用flex-shrink单独设置,这个属性只有在没有额外空间时起作用,意思是没有额外空间时,成员贡献出空间的大小。默认值为1,如果为0意思是不贡献空间,也就是说即使空间不足,成员大小也不发生改变。

首先默认情况,改变容器的大小

然后,如果设置为0。

如果给二号设置为2, 已知默认值为1

可以看出二号释放出的空间是一和三的两倍,所以这里的值并不是缩小的比例,而是释放空间的份额。默认都为1,那也就是说大家释放同等的空间去填补容器的缩小量。

flex的第三个值

可以用flex-basis来设置,这个值呢,表示在分配额外空间之前,成员占据的空间,默认值为auto,意思就是你本来占多少就是多少。但也可以自己设置长度(px)。这个值的效果就是确定在释放和分配空间的时候,你的初值是多少。

比如三个成员原本长度一样的,我给二号设置flex-basis,如图

总结

flex属性其实就是flex-grow,flex-shrink,flex-basis三者的缩写形式。要么只写第一个,要么三个全写,防止自己搞错(确实有flex:0 auto 这种写法,但最好还是避免吧)

一般还有几个常用值

flex:auto;  等同于 flex:1 1 auto; 意思就是占满额外空间,可缩放。

flex:none;  等同于flex:0 0 auto;  意思是不占额外空间,不可缩放。

从字面上解释大概就是可弹性与不可弹性。

时间: 2024-10-27 13:02:46

flex 布局下关于容器内成员 flex属性的理解的相关文章

flex布局下, 内容改变 不重新渲染问题

当使用flex布局时,flex内元素包含的内容改变时,浏览器不会进行重新渲染, 答案引用 http://stackoverflow.com/questions/23474191/flexbox-height-not-updating-when-content-changes 主要CSS .prelative {     position:relative; } div:before { content:attr(class); left:-9999px; position:absolute; }

flex弹性盒模型(容器块上的属性)

容器块上的属性: flex-direction:决定主轴方向 值row:(默认值)主轴为水平方向,起点在左端 row-reverse:水平方向,起点在右端 colum:垂直方向,起点在上沿 column-reverse:垂直方向,起点在下沿 flex-wrap:换行规则 值nowrap(默认值)不换行 wrap:换行,第一行在上方 wrap-reverse:换行,第一行在下方 justify-content:设置项目在主轴上的对齐方式 值conter居中 fle-start:从起点开始排序 fl

flex布局中同一行内对齐左右两端

之前实现左右对齐都是用的float,但是用float经常会出现浮动影响,有时候清浮动也不能完全消除影响,后来用了flex之后觉得挺好用,不存在这个问题,所以现在都是能用flex就用flex,以下是用flex替代float实现左右对齐的代码 <div class="lh" style="padding: 20px 0;"> <div style="display: flex;flex-flow: row nowrap;justify-con

Flex布局语法与实践

参考文献 阮一峰 Flex布局的语法 阮一峰 Flex布局的实践 Flex语法 Flex是什么 Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性.任何一个容器都可以指定为Flex布局,行内元素也可以使用Flex布局. 采用Flex布局的元素,称为Flex容器(flex container),简称"容器".它的所有子元素自动成为容器成员,称为Flex项目(flex item),简称"项目". Flex容器的

(转)30 分钟学会 Flex 布局

原文链接:https://zhuanlan.zhihu.com/p/25303493 最简单实用的 Flex 布局教程,30 分钟让你学会 Flex 语法基础. 为什么我要写这一篇关于 Flex 布局的教程? 因为它十分简单灵活,区区简单几行代码就可以实现各种页面的的布局,以前我在学习页面布局的时候我深受其 float.display.position 这些属性的困扰.然而学习 Flex 布局,你只要学习几个 CSS 属性,就可以写出简洁优雅复杂的页面布局. 本教程适合人群: 前端小白,不太明白

CSS3 Flex布局 Flexbox的属性详解

原文:A Visual Guide to CSS3 Flexbox Properties Flex布局官方称为CSS Flexble Box布局模型是CSS3为了提高元素在容器中的对齐.方向.顺序,甚至它们是动态的或者不确定大小的新布局模型.Flex容器的主要特征是能够调整其子元素在不同的屏幕大小中能够用最适合的方法填充合适的空间. 很多的设计师和开发者发现Flex布局很容易使用,它定位元素简单因此很多复杂的布局能够用很少的代码实现,引领更简单的开发过程.Flex布局的算法是基于方向的,不同于基

微信小程序之Flex布局

微信小程序页面布局方式采用的是Flex布局.Flex布局,是W3c在2009年提出的一种新的方案,可以简便,完整,响应式的实现各种页面布局.Flex布局提供了元素在容器中的对齐,方向以及顺序,甚至他们可以是动态的或者不确定的大小的.Flex布局的主要特征是能够调整其子元素在不同的屏幕大小中能够用最适合的方法填充合适的空间. flex布局 Flex布局的特点: 任意方向的伸缩,向左,向右,向下,向上 在样式层可以调换和重排顺序 主轴和侧轴方便配置 子元素的空间拉伸和填充 沿着容器对齐 微信小程序实

深入理解 flex 布局以及计算_Flexbox, Layout

起因 对于Flex布局,阅读了 大漠老师和其他老师写的文章后,我还是不太理解Flexbox是如何弹性的计算子级项目的大小以及一些其他细节.在大漠老师的帮助下,我去查阅Flexbox 的 W3C 规范文档. 注:本篇博文不适合未接触过Flex 布局的人, 如果想了解flex 布局基础.请参考理解Flexbox:你需要知道的一切 对于flex盒模型的设计期望 flex盒模型是被期望设计成: 在任何流动的方向上(包括上下左右)都能进行良好的布局 可以以逆序 或者 以任意顺序排列布局 可以线性的沿着主轴

Flex布局做出自适应页面--语法和案例

本文发布在: github项目地址:https://github.com/tenadolanter/flex-layout-demo SegmentFault地址:https://segmentfault.com/a/1190000012916949/ CSDN地址:http://blog.csdn.net/qq_34648000/article/details/79115294 博客园地址:http://www.cnblogs.com/zhanai/p/8321220.html Flex布局简