专栏名称: 程序员成长指北
专注 Node.js 技术栈分享,从 前端 到 Node.js 再到 后端数据库,祝您成为优秀的高级 Node.js 全栈工程师。一个有趣的且乐于分享的人。座右铭:今天未完成的,明天更不会完成。
目录
相关文章推荐
国家知识产权局  ·  数码产品国补“满月” 超2671万名消费者参与 ·  9 小时前  
知识产权界  ·  年薪60-100万!广州嘉权专利商标事务所诚 ... ·  2 天前  
上海知识产权  ·  【动态】奉贤区知识产权局召开2025年度知识 ... ·  2 天前  
51好读  ›  专栏  ›  程序员成长指北

彻底搞懂 flex: 1,flex: auto,flex: 0

程序员成长指北  · 公众号  ·  · 2024-12-14 22:51

正文

点击上方 程序员成长指北,关注公众号

回复1,加入高级Node交流群


我们在日常使用flex布局的时候,经常会用到 flex 缩写。flex简写设置了项目如何增大或缩小以适应在容器中可用的空间。flex简写属性在下面有三个值的定义 默认值为 0 1 auto ;

  • flex-grow :定义项目的放大比例,默认为 0
  • flex-shrink :定义项目的缩小比例,默认为 1
  • flex-basis :定义项目在分配多余的空间之前,项目占据的主轴空间 默认为 auto (item本来大小) 在了解了flex的基本值之后,我们会用一些用例来实验一下(没有特殊声明的话,用例代码都是以下的结构)
  <div class="wrapper ">
    <item class="inner">一一一一一一一一一一一一一一一一item>
    <item class="inner">二二item>
    <item class="inner">三三item>
    <item class="inner">四四四四四四四四四四四四四四四四item>
  div>

flex:1

flex:1 = flex: 1 1 0%;

flex:1在父元素尺寸不足的时候,会 优先最小化内容尺寸

下面我们给用例设置样式看下这句话是什么意思

.wrapper{
    margin0 auto;
    width560px;
    height40px;
    border: black 1px solid;
    display: flex;
  }
  .wrapper > .inner{
    border: chartreuse 1px solid;
    flex:1;
  }
image.png

从例子我们可以看出 flex:1 ,在充分分配容器尺寸的前提下,会优先 牺牲自己 ,填充父容器的尺寸

使用场景

当我们希望元素可以 充分的利用剩余的空间,同时不会很多的占用其他同级元素的空间 的时候使用。

  • 等分布局
  • 等比例列表

flex:auto

flex:auto = flex: 1 1 auto;

flex:auto在父元素尺寸不足的时候,会优先最大化内容尺寸。

.wrapper{
    margin0 auto;
    width560px;
    height40px;
    border: black 1px solid;
    display: flex;
  }
  .wrapper > .inner{
    border: chartreuse 1px solid;
    flex:auto;
  }
image.png

从例子我们可以看出 flex:auto ,在充分分配容器尺寸的前提下,会优先 扩展自己 ,填充父容器的尺寸

使用场景

当我们希望元素 充分的使用剩余的空间,各自元素按照各自内容进行分配 的时候使用

  • 内容动态适配布局
  • 自适应布局
  • 子元素个数不确定时

flex:0

flex:0 = flex: 0 1 0%;

flex:0 :通常表现为 内容最小化宽度

  .wrapper{
    margin0 auto;
    width560px;
    height40px;
    border: black 1px solid;
    display: flex;
    
  }
  .wrapper > .inner{
    border: chartreuse 1px solid;
    flex:0;
  }
image.png

从以上的例子可以看出:flex:0的时候元素的内容 宽度 最小化,并没有充分的分配容器的尺寸。

使用场景

当希望元素item占用最小化的内容宽度的时候

flex:none

flex:none = flex:0 0 auto;

flex:none;表示元素的大小由内容决定,但是flex-grow,flex-shrink都是0,元素没有弹性,通常表现为 内容最大化宽度

  .wrapper{
    margin0 auto;
    width560px;
    height40px;
    border: black 1px solid;
    display: flex;
    
  }
  .wrapper > .inner{
    border: chartreuse 1px solid;
    flex:none;
  }
image.png

从以上的例子可以看出:flex:none的时候元素的内容直接溢出容器,没有换行,表现为 最大内容宽度

使用场景:

元素的宽度就是内容的宽度,并且内容永远不会换行







请到「今天看啥」查看全文