为了账号安全,请及时绑定邮箱和手机立即绑定

Flexbox深入浅出系列之Flex项目属性(5)

一、Flex项目的相关属性

Flex容器中的项目的相关属性有以下6个:

  • order
  • flex-grow
  • flex-shrink
  • flex-basis
  • flex
  • align-self

order属性

order属性定义项目的排序顺序。数值越小,排列越靠前。

.item{
    order:<integer>
}

注意:order属性默认为0,可以为负数

案例:order


flex-grow属性

flex-grow属性定义项目的放大比例,默认为0,就是如果存在剩余空间,也不放大。

.item{
    flex-grow:<number>;
}

如果所有项目的flex-grow属性都为1,则它们将等分剩余空间(如果有的话)。如果一个项目的flex-grow属性为2,其他项目都为1,则为2的占据剩余空间比为1的大一倍。

案例:flex-grow


flex-shrink属性

flex-shrink属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。

.item{
    flex-shrink:<number>;
}

如果所有项目的flex-shrink属性都为1,当空间不足的时候,都将等比例缩小。如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。

注意:flex-shrink不能为负

案例:flex-shrink

flex-basis属性

flex-basis属性定义了在分配偶遇空间之前,项目占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。它的默认值为auto,即项目的本来大小。

.item{
    flex-basis:<length>| auto;
}

它可以设为跟width或height属性一样的值(像300px),则项目将占据固定空间。

案例:flex-basis

flex属性

flex属性是flex-grow、flex-shrink、flex-basis的缩写,默认值为0 1 auto。

.item{
    flex:none|[<'flex-grow'> <'flex-shrink'>? || <'flex-basis'> ]
}

这个属性有两个快捷键值:auto (1 1 auto) 和 none(0 0 auto)

flex常见值:

  • flex:0 auto,flex:initial与flex:0 1 auto相同。这是初始值。根据元素的widht/height属性决定元素的尺寸。(如果项目的主轴长度属性的计算值为auto,则会根据其内容来决定元素尺寸。)当剩余空间为正值时,伸缩项目无法伸缩,但当空间不足时,伸缩项目可伸缩至其最小值。

  • flex:auto与flex:1 1 auto相同。根据width/height属性决定元素的尺寸,但是完全可以伸缩,会吸收主轴上剩下的空间。如果所有项目均为flex:auto、flex:initial或者flex:none,则在项目尺寸决定后,剩余的正空间会被平分给flex:auto的项目。

  • flex:none与flex:0 0 auto相同。根据width/height属性决定元素的尺寸,但是完全不可伸缩。其效果与initial类似但即使在空间不够而溢出的情况下,伸缩项目也不能收缩。

  • flex:number与flex:1 0px相同。该值使元素可伸缩,并将伸缩基准值设置为零,导致该项目会根据设置的比率占用伸缩容器的剩余空间。如果一个伸缩容器的所有项目都使用此模式,则它们的尺寸会正比于指定的伸缩比率。

注意:

  • 建议使用缩写属性,这样可以防止浏览器推算相关值。
  • flex最后两个属性可选
  • 默认状态下,伸缩项目不会收缩至比其最小内容尺寸更小,我们可以通过设置min-width或者min-height属性来改变这个默认状态。

案例:flex


align-self属性

align-self属性允许单个项目有与其他项目不一样的对齐方式,可覆盖align-items属性。默认值为auto,表示继承元素的align-items属性,如果没有父元素,则等同于stretch。

.item{
    align-self:auto | flex-start | flex-end | center | baseline | stretch;
}

该属性可能取6个值,除了auto,其他都与align-items属性完全一致。

案例:align-self

点击查看更多内容
8人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消