Flex布局

弹性布局,css3中的flex属性,在布局中做了非常大的改进,使得我们对多个元素之间的布局排列变得十分灵活,其强大的伸缩性和自适应性,在网页开中可以发挥极大的作用。

1.flex 布局的子元素不会脱离文档流

相比float来做布局,float属性的元素会脱离文档流,而且会涉及到各种BFC、清除浮动的问题

2.弹性盒子 子元素

** 弹性盒子:指的是使用 display:flex 或 display:inline-flex 声明的父容器**。

子元素/弹性元素:指的是父容器里面的子元素们(父容器被声明为 flex 盒子的情况下)。

3.主轴和侧轴

主轴默认是水平方向,弹性盒子的子元素默认从左到右排列,子元素在没有宽度的情况下,会坍缩到内容的大小

可以通过flex-direction: 改变主轴方向

row

row-reverse

column

column-reverse

3.主轴的对齐方式

  /* 向起始位置对齐

  justify-content: flex-start; */

           /*  向结束位置对齐

        justify-content: flex-end; 

        /*     向行中间位置对齐

        justify-content: center; */

          /*   平均的分配到行里

        justify-content: space-around; */

        /* 第一个贴左边,最后一个贴右边,其他盒子均分,保证每个盒子之间的空隙是相等的。(常用)

        justify-content: space-between; */

       /*  子元素于子元素的距离完全相等

        justify-content: space-evenly; */

4 侧轴单行元素的对齐方式

 /* align-items(重点 针对的是单行) */

      /*   元素在侧轴的起始位置对齐。 

        align-items: flex-start; */

        /* flex-end: 元素在侧轴的结束位置对齐。

        align-items: flex-end;

       */

      /*  center: 元素在侧轴上居中对齐。(常用)

       align-items: center; */

       /* 当没有设置宽度的情况下,将元素宽度拉伸至侧轴大小 */

5.侧轴单多行元素的对齐方式

        /* 多行文本充满主轴,没法设置对齐方式

	比如子元素设置成百分形式,充满轴 */



        /* align-content是多行文本在侧轴的对齐方式 */

        /* 各行向侧轴的起始位置堆叠。 

        align-content:flex-start ; */

       

       /* 全部 各行向弹性盒容器的结束位置堆叠。

        align-content: flex-end; */

       /* 全部各行向弹性盒容器的中间位置堆叠。

      align-content: center;

*/

      /* 第一行贴上边,最后一个行贴下边,其他行在弹性盒容器中平均分布。 

      align-content: space-between;

*/

     /* 在侧轴平均分布

     align-content: space-around; 

      */

6.元素换行

   flex-direction: row; /* 元素装不下会自动坍缩,不会换行 */

        flex-wrap: nowrap;/* 不换行 */

       /*  flex-wrap: wrap; 换行*/

7.flex属性

flex: 1(份数)

子元素通过设置flex属性达到分配弹性盒子空间的效果

实现自适应效果:

左边固定,右边自适应  左边盒子写宽高,右边盒子设置flex:1

右边固定,左边自适应   右边盒子写宽高,左边盒子设置flex:1

左右固定,中间自适应    左、右边盒子写宽高,中间盒子设置flex:1



补充1:让容器里的文字垂直水平对齐,

		先flex父盒子,在设置justify-content:center;

		align-items:center(单行) / align-content:center

补充2:骰子的四点制作
       	<div class="item">

           		 <div class="info"></div>

            	 <div class="info"></div>

      	 </div>

       	<div class="item">

            	 <div class="info"></div>

            	 <div class="info"></div>

      	 </div>     

</div>

先给类four主轴为竖直方向,两个item两端对齐

.four {

        border: 1px solid black;

        display: flex;

flex-direction: column;

        /*  在竖直主轴上两端对齐 */

         justify-content: space-between;   

    }

再让item弹性,并且两端对齐

.four .item {

        display: flex;

        /* item里主轴仍是水平方向 */

         /*  在水平主轴上两端对齐 */

        justify-content: space-between;

    }
原文地址:https://www.cnblogs.com/zdy4396/p/14025131.html