flex:1详解,以及flex:1和flex:auto的区别

什么是flex:1?

在css中,我们经常可以看到这样的写法:

.box {
  display: flex;
}

.item {
  flex: 1;
}

这里的flex:1相当于flex: 1 1 0%,它是一个简写属性,表示项目(flex item)在弹性容器(flex container)中如何伸缩。它相当于flex: 1 1 0%,包含了三个子属性:

  • flex-grow 定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大。
  • flex-shrink 定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
  • flex-basis 定义在分配多余空间之前,项目占据的主轴空间(main size),浏览器根据此属性计算主轴是否有多余空间,默认值为 auto ,即项目本身的大小。

flex:1的作用

使用flex:1的作用是让项目能够自动填充剩余空间,实现自适应布局。例如,我们有一个水平排列的三个项目,它们的内容长度不一样,我们想让它们平均占据一行的空间,就可以给它们都设置flex:1\

<div class="container">
  <div class="item">Hello</div>
  <div class="item">World</div>
  <div class="item">Flex</div>
</div>
.container {
  display: flex;
}

.item {
  flex: 1;
}

这样,无论容器的宽度如何变化,项目都会自动调整宽度,保持平均分配。

flex:1和其他值的区别

flex属性还可以取其他值,例如:

  • flex: none,相当于flex: 0 0 auto,表示项目不会伸缩,保持原始大小。
  • flex: auto,相当于flex: 1 1 auto,表示项目会根据自身大小和剩余空间进行伸缩。
  • flex: n(n为正整数),相当于flex: n 1 0%,表示项目的放大比例为n,其他值默认。

我们可以通过修改上面的例子来观察不同值的效果:

<div class="container">
  <div class="item none">Hello</div>
  <div class="item auto">World</div>
  <div class="item one">Flex</div>
</div>
.container {
  display: flex;
}

.item {
  border: 1px solid black;
}

.none {
  flex: none;
}

.auto {
  flex: auto;
}

.one {
  flex: 1;
}

可以看到,none类的项目保持了原始大小,auto类的项目根据内容长度进行了伸缩,one类的项目平分了剩余空间。

felx:1和flex:auto的区别

  • flex-basis属性定义了项目在分配多余空间之前,占据的主轴空间(main size)。
  • flex:1相当于flex: 1 1 0%,表示项目的基准大小为0%,不考虑项目本身的大小,只根据剩余空间进行伸缩。
  • flex:auto相当于flex: 1 1 auto,表示项目的基准大小为auto,即项目本身的大小,同时也会根据剩余空间进行伸缩。

这样,当容器的大小变化时,两者的表现也不同。

  • 如果容器有足够的空间,flex:1和flex:auto都会平分剩余空间,但是flex:auto会保持项目本身的最小宽度,而flex:1不会。
  • 如果容器没有足够的空间,flex:1会优先压缩内容,使得所有项目都能等分空间,而flex:auto会优先保持内容的完整性,挤压其他项目的空间。

总结

flex:1是一个常用的CSS属性,它可以让项目在弹性容器中自动填充剩余空间。
它是一个简写属性,包含了三个子属性:flex-grow, flex-shrink, flex-basis。
它相当于flex: 1 1 0%,flex:1和flex:auto都会占满剩余空间,我们可以根据合适的需求去选择这两种属性。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
本人从其他网站上下载的,333页全,看到CSDN上没有完整的版本,所以共享一下。由于文件比较大,压缩成了两个文件上传。 第1章 Flex企业应用开发入门  1.1 B/S企业应用开发者的噩梦  1.2 噩梦结束,新时代来临  1.3 Flex概述  1.4 Flash Player的工作模型   1.4.1 Flash Player的帧执行模型   1.4.2 Flash Player渲染模型   1.4.3 Flash中的事件机制  1.5 小结 第2章 Flex企业应用开发基础  2.1 MXML语言   2.1.1 用MXML表示ActionScript对象   2.1.2 查看由MXML文件所翻译的ActionScript代码   2.1.3 IMXMLObject接口  2.2 客户端保持状态  2.3 客户端MVC  2.4 数据绑定   2.4.1 实现数据绑定的方法   2.4.2 数据绑定发生的时机   2.4.3 可以用于数据绑定的属性   2.4.4 数据绑定的用途   2.4.5 使用Bindable元数据标记   2.4.6 绑定到函数、对象和数组   2.4.7 使用可绑定属性链进行工作  2.5 Flex中的组件化编程   2.5.1 认识Flex组件和组件容器   2.5.2 组件生命周期与布局   2.5.3 组件的失效机制   2.5.4 使用ActionScript创建自定义组件  2.6 异步调用   2.6.1 异步调用导致模型数据不一致   2.6.2 异步调用导致用户反复(误)操作  2.7 小结 第3章 Flex企业应用开发中的主要元素  3.1 企业应用的特点  3.2 Flex Application   3.2.1 SystemManager   3.2.2 Preloader   3.2.3 Application的作用和主要属性   3.2.4 通过SWFLoader加载Application   3.2.5 域及跨域访问  3.3 Flex Module   3.3.1 创建模块   3.3.2 模块的编辑与编译   3.3.3 模块文件的加载   3.3.4 主应用和模块的交互  3.4 Flex库文件SWC  3.5 Flex编译模式、链接模式与RSL   3.5.1 使用系统RSL—Framework   3.5.2 其他的系统RSL   3.5.3 RSL的摘要   3.5.4 使用私有RSL  3.6 小结 第4章 Flex on Java企业应用架构 第5章 BlazeDS框架详解 第6章 Flex+BlazeDS应用开发实例 第7章 将范例应用改进为真正的企业应用 第8章 Flex打印 第9章 Flex企业应用性能优化 第10章 Flex企业应用开发的其他技术 附录 Flex Builder 中的项目如何迁移至Flash Builder
引用介绍了CSS中的display:flex和display:inline-flex属性,这两个属性用于创建弹性布局。display:flex属性将元素设置为弹性容器,使其子元素能够灵活地调整大小和位置。而flex属性是用来控制弹性盒子中子元素的伸缩比例的,flex:1表示子元素能够平均分配弹性容器的剩余空间,使它们具有相等的宽度或高度。引用中也提到了display:flex属性,指出它是弹性布局的一种方式,并且简洁方便地实现了弹性布局的效果。综上所述,display:flex属性的flex:1表示子元素能够平均分配弹性容器的剩余空间。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [详解CSS中的display:flex||inline-flex属性](https://download.csdn.net/download/weixin_38501751/12891643)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [display:flex属性](https://blog.csdn.net/wangshuaibinggg/article/details/127191923)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [css display:flex 属性](https://blog.csdn.net/qq_40716795/article/details/114028424)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

都挺好,刚刚好

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值