简介

display:flex;
弹性布局是css3的一种新的布局方式,它能够快速轻易的实现页面的各种布局。

  • 采用弹性布局的盒子叫做弹性盒子
  • 弹性盒子中的元素称为弹性项目
  • 容器中有两条轴,沿水平方向的叫主轴,垂直于主轴的叫侧轴

常用属性

flex-direction:

(控制项目的排列方向)

  • row(默认)
  • row-reverse
  • column(纵向)
  • column-reverse
flex-direction: row;

flex-direction: column;

flex-wrap

(如果一行放不下是否换行)

  • nowrap(默认)
  • wrap(换行)
  • wrap-reverse(换行并反转)
    <div class="container">
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
        <div>5</div>
    </div>
        div {
   
            border: 1px solid red;
        }
        .container {
   
            width: 500px;
            height: 300px;
            display: flex;
            flex-direction: row;
            flex-wrap: nowrap;
        }
        .container div {
   
            width: 200px;
            height: 100px;
        }

整个容器的宽高为500px*300px,每一个弹性项目的宽高为200px*100px,默认情况是不换行自动将弹性盒子的宽度设置为100px

如果设置为wrap,盒子会进行换行,大小是自己设置的大小

以上两种属性可以通过flex-flow: row wrap;简写

justify- content

弹性项目在主轴上的对齐方式

  • flex-start(默认)
  • flex-end
  • center(居中)
  • space-between(两端对齐)
  • space-around
  • space-evenly

justify-content: flex-end;依次在容器中添加div观察排列方式



justify-content: center;

justify-content: space-between;

justify-content: space-around;

justify-content: space-evenly;
间隙的宽度是一样的

align-items

弹性项目在侧轴上的对齐方式(与在主轴上对齐方式相似)

  • stretch(默认)
  • flex-start
  • flex-end
  • center

align-content

元素换行后设置多行对齐方式(此功能与justify- content相似),前提是容器必须设置flex-wrap换行

  • flex-start(默认)
  • flex-end
  • center
  • space-between
  • space-around
  • space-evenly

align-content: flex-start;(1和3的间隙没有了)

align-content: center;

flex

该属性是卸载弹性项目中的,定义项目的伸缩比例

    <div class="container">
        <div class="1">1</div>
        <div class="2">2</div>
        <div class="3">3</div>
    </div>
        .container {
   
            width: 500px;
            height: 300px;
            display: flex;
        }
        .container div {
   
            width: 200px;
            height: 100px;
        }
        .first {
   
            flex: 1;
        }
        .second {
   
            flex: 2;
        }
        .third {
   
            flex: 3;
        }

相当于在这一行中分了1+2+3=6份,flex的值就是占了几份

order

该值也是该弹性项目设置的,定义项目的排列顺序

        .first {
   
            flex: 1;
            order: 3;
        }
        .second {
   
            flex: 2;
            order: 1;
        }
        .third {
   
            flex: 3;
            order: 2;
        }

值越大的,就后产生这个盒子