flex布局说明

flex布局又称作弹性盒布局,其由两部分组成,首先是弹性盒【flex-container】,其次是弹性子元素【flex-items】

1. flex-container常见属性:

  1. flex-direction: row | row-reverse | column | column-reverse 规定了弹性盒子元素的排列顺序

  2. flex-wrap: nowrap | wrap | wrap-reverse 默认为nowrap在一行显示所有弹性子元素 常搭配align-content使用,规定了弹性子元素超出弹性盒长度时是否换行显示弹性子元素

  3. justify-content:flex-start | flex-end | center | space-around | space-between 规定了弹性子元素的位置

  4. align-items:flex-start | flex-end | center | baseline | stretch 规定了弹性子元素在副轴方向的排列位置

  5. align-content:flex-start | flex-end | center | space-around | space-between 规定了弹性容器内各个行的副轴元素排列方式【注意与align-items区分】

  6. flex-flow:是flex-wrap以及flex-direction的复合属性

2. flex-items常见属性:

  1. order:属性值为Number,数字越小,排序越靠前

  2. flex:【flex-grow】|【flex-shrink】|【flex-basis】分别为弹性子元素放大比率,缩小比率,以及初始长度

    flex-basis常见可以设置为Number,表示占据多少份,也可以设置为百分比.

  flex-shrink: 设置一个弹性子元素的收缩比率
  说明:假设所有弹性子元素flex-shrink为1 单独设置一个子元素flex-shrink为3,那么此子元素是其他子元素的三分之一
  flex-grow: 设置一个弹性子元素的放大比率
  flex-basis: 设置一个弹性子元素的大小

  3. margin 可以设置完美居中,auto直接可实现水平垂直居中

  4. align-self:设置自身在侧轴的位置

 3. flex常见布局:

  1. 圣杯布局:分为三行,首行为header,中间又分为left、center、right,末尾为footer

  <div class="holy">
    <header></header>
    <div class="body">
      <div class="left"></div>
      <div class="center"></div>
      <div class="right"></div>
    </div>
    <footer></footer>
  </div>
  <style>
    .holy {
      display: flex;
      height: 100vh;
      flex-direction: column;
    }
    header {
      background-color: pink;
      height: 20vh;
      flex: 1;
    }
    .body {
      display: flex;
      flex: 1;
    }
    .left {
      background-color: skyblue;
      flex: 0 0 20%;
    }
    .center {
      background-color: red;
      flex: 0 0 50%;
    }
    .right {
      background-color: gold;
      flex: 0 0 30%;
    }
    footer {
      background-color: green;
      flex: 1;
    }
  </style>

  2. 基本网格布局

  3. 百分比布局

  4. 两边固定,中间自适应布局【以下代码摘自https://www.ruanyifeng.com/blog/2015/07/flex-examples.html】

  <div class="InputAddOn">
    <span class="InputAddOn-item">...</span>
    <input class="InputAddOn-field">
    <button class="InputAddOn-item">...</button>
  </div>
  <style>
    .InputAddOn {
      width: 200px;
      display: flex;
    }

    .InputAddOn-field {
      flex: 1;
    }
  </style>

  5. 骰子布局

  6. 悬挂布局:左边是图片,右边是文字

  <div class="box">
    <img src="..." alt="">
    <p>...</p>
  </div>
  <style>
    .box {
      display: flex;
      align-items: flex-start;
    }
    p {
      flex: 1;
    }
  </style>

  7. 流式布局:flex多行显示,且一行未满时从左到右依次填充

上一篇:原生js实现图片单张上传及批量上传


下一篇:4种CSS实现div水平垂直居中的方法