Flex布局

 

Flex布局又名伸缩布局

布局的传统解决方案,基于盒状模型,依赖 display属性 + position属性 + float属性。它对于那些特殊布局非常不方便。

CSS3在布局方面做了非常大的改进,使得我们对块级元素的布局排列变得十分灵活,适应性非常强,其强大的伸缩性,在响应式开中可以发挥极大的作用。

前提:给父元素设置一个display:flex .可以设置一个伸缩盒子,里面所有的元素都是伸缩项。

常用的属性:

1.   flex-direction:确认主轴的方向,也就是元素排列的方向   

  •          row(行 默认值是x方向从左到右排列
  •          column 列  竖直方向从上往下排列
  •         row-reverse   水平方向从右往左排列
  •          column-reverse   竖直方向由下往上排列

这个时候要注意水平方向一个是主轴,另外一个就是副轴

2.  justify-content   主轴上的对其方式,这个主轴就是1 flex-direction设置的

  •      flex-start   左对齐
  •      flex-end    右对其
  •      center       居中对
  •      space-round     这个是空在元素的周围,所以左右都是有空隙的,且中间是两边的
  •       space-between     between在什么中间    左右是没有缝隙的,空隙在元素之间平分
  •  

 3.align-items  侧轴上的对齐方式

  • flex-start 默认上对其
  • flex-end   下对齐
  • center      默认中间对齐
  • stretch  侧抽上的拉伸,关注高度设置,不生效

这个时候有两个问题  1.什么叫侧轴? 比如刚才flex-direction设定的为row那竖直方向就是侧轴

                                  2. 设置direction对侧轴上的排列方式有什么影响吗?

在来一个简单的,设置竖直方向为正方向,那对竖直方向做的任何事情都是justify-content,对横轴做的任何事情都是align-items

 

简单的案例:

分析:

1.先对子元素div进行水平方向的排列。这个时候用到伸缩盒子的属性设置flex=1

2.对每个子元素下的两个元素进行垂直居中:先对子元素进行flex-direction:colum;默认方向是从上往下排列

然后对副轴也就是横轴设置一个align-items:center;让其在子元素内垂直居中

<body>
  <div class="p">
    <div class="s">
      <div class="img"></div>
      <span>info</span>
    </div>
    <div class="s">
      <div class="img"></div>
      <span>info</span></div>
    <div class="s">
      <div class="img"></div>
      <span>info</span></div>
    <div class="s">
      <div class="img"></div>
      <span>info</span></div>
    <div class="s">
      <div class="img"></div>
      <span>info</span></div>
  </div>
</body>

 

 <style>
    .p {
      width: 500px;
      height: 100px;
      border: 1px solid #000;
      /* 1.flex布局 */
      display: flex;
      /* 2.默认主轴:row */
      flex-direction: row;
    }
    
    .s {
      width: 100px;
      height: 80px;
      background-color: blue;
      /* 3.子元素flex布局 */
      display: flex;
      /* 4.确认主轴方向 :列*/
      flex-direction: column;
      /* 5.单行侧轴:行,行对齐 */
    
    }
    
    .img {
      width: 40px;
      height: 40px;
      background-color: #fff;
      border-radius: 50%;
    }
  </style>

4.    flex-flow: flex-flow属性是flex-direction属性和flex-wrap属性的简写形式,默认值为row nowrap。它用来设置或检索弹性盒模型对象的子元素排列方式,它的两种取值:flex-direction:定义弹性盒子元素的排列方向。flex-wrap:控制flex容器是单行或者多行。

  • flex-direction:  flex-direction:row | row-reverse | column | column-reverse

²  row:主轴与行内轴方向作为默认的书写模式。即横向从左到右排列(左对齐)。

²  row-reverse:对齐方式与row相反。

²  column:主轴与块轴方向作为默认的书写模式。即纵向从上往下排列(顶对齐)。

²  column-reverse:对齐方式与column相反。

  • flex-wrap:  flex-wrap:nowrap | wrap | wrap-reverse

²  nowrap:flex容器为单行。该情况下flex子项可能会溢出容器

²  wrap:flex容器为多行。该情况下flex子项溢出的部分会被放置到新行,子项内部会发生断行

²  wrap-reverse:反转 wrap 排列。

5.align items:侧轴对齐(针对是一列元素中的单个元素,所以要单独设置)

  • flex-end 下对齐
  • center 中对齐
  • flex-start 上对齐
  • stretch 侧轴方向拉伸,没有高度才会生效

        

 

 

posted on 2019-06-20 18:39  长出了耳朵的小茉莉  阅读(256)  评论(0编辑  收藏  举报

导航