flex 伸缩项属性

使用使用flex做横向布局时,常常有左边固定宽度,右边自适应占满的需求,这个时候右面元素一般会使用flex:1 属性自动填满空间,但左边元素会发生挤压,无法达到css中给定的宽度。

这个问题是由flex伸缩项属性的默认值引起的,flex-shrink属性的默认值为1,即默认当空间不足时会缩小,需要将其值改为0,保持原始大小。

flex:1 实际上是 flex-grow:1; flex-shrink:1; flex-basis:0%; 的简写,

flex 伸缩项属性一共有三个,即flex-basis,flex-grow,flex-shrink

优先级最高的是flex-basis,这个属性决定CSS如何给可伸缩项在容器中分配初始大小,其含有两个值,

auto(默认)的意思是首先看当前项有没有明确设置宽度,如果有则使用该宽度;如果没有,则以包含的内容决定宽度。

content是不管当前项是否明确设置了宽度,一律以内容决定宽度。


flex-grow,属性定义项目的放大比例,默认为0,即如果存在剩余空间,也不放大,其余值可取正整数,意思是放大占剩余空间份数。

当有剩余空间时,当前项可分得的剩余空间 = ( 当前项flex-grow值/所有项flex-grow值之和 ) * 剩余总宽度。


flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。其值为0时则空间不足也不会缩小,其余正值为缩小份数(比例)。

当前项收缩的宽度 = ( 当前项flex-shrink * 当前项flex-basis/ 所有项flex-shrink 与各自flex-basis乘积之和 ) * 需收缩的总宽度

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • H5移动端知识点总结 阅读目录 移动开发基本知识点 calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇阅读 10,115评论 0 26
  • 前言 FlexBox是css3的一种新的布局方式,天生为解决布局问题而存在的它,比起传统的布局方式,我们使用Fle...
    zevei阅读 5,258评论 23 3
  • 移动开发基本知识点 一.使用rem作为单位 html { font-size: 100px; } @media(m...
    横冲直撞666阅读 8,886评论 0 6
  • 简单介绍 Flexible Box 模型,通常被称为 flexbox,是CSS3中新出现一种一维的布局模型。它给 ...
    原上的小木屋阅读 5,651评论 0 1
  • 2017年1月8日 星期一 天气阴 今天是特种兵培训第一天,感觉今天特别紧张,特别忙碌,特别激动,也特别感动...
    陈秋旭阅读 2,985评论 0 0