zoukankan      html  css  js  c++  java
  • flex布局详解

    display:flex 布局 

      X轴 称为主轴
      Y轴 交叉轴

      display:flex 是一种布局方式。它即可以应用于容器中,也可以应用于行内元素。是W3C提出的一种新的方案,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持。

      Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。设为Flex布局以后,子元素的float、clear和vertical-align属性将失效。

        flex的六个属性
            flex-direction 决定主轴的方向(即项目的排列方向)
              1:flex-direction:row;(默认值) 主轴水平方向,起点在左端         

              2 : flex-direction:row-reverse;主轴水平方向,起点在右端

              3:flex-direction:column; 主轴垂直方向,起点在上边沿

              4:flex-direction:row-reverse;主轴垂直方向,起点在下边沿

            flex-wrap 定义换行情况(默认不换行)
              1:flex-wrap: nowrap; (默认)元素不换行,比如:一个div宽度100%,设置此属性,2个div宽度就自动变成各50%;

              2:flex-wrap: wrap; 元素换行 第一行在下方,比如:一个div宽度100%,设置此属性,第二个div就在第二行了;

              3 : flex-warp: warp-reverse; 元素换行 第一行在下方

     

          direction与wrap 可以简写为 flex-flow direction属性 wrap属性
            例如 flex-flow row wrap


            justify-content 定义项目在主轴上的对齐方式
              1:justify-content : center ; 居中对齐

              2:justify-content : flex-start; 左对齐

              3:justify-content : flex-end;右对齐

              4:justify-content : space-between;两端对齐,项目之间间隔相等

              5:justify-content : space-around;每个项目两侧的间隔相等,即项目之间的间隔比项目与边框的间隔大一倍

              6 : justify-content : space-evenly ; 每个项目空间距离一样

            align-items 定义在交叉轴上的对齐方式

              # 起点会根据flex-direction的值会进行起点的改变


              1:align-items : flex-start; 起点对齐

              2:align-items : flex-end; 终点对齐

              3:align-items : center; 中点对齐

              4:align-items : baseline; 项目的第一行文字的基线对齐

              5 : align-items : stretch ; (默认值) 如果项目未设置高度或设为auto,将占满整个容器的高度。 



            align-content 定义多根轴线的对齐方式

              如果项目只有一根轴线,该属性不起作用。
              所以,容器必须设置flex-wrap:···;

              1:align-content: flex-start; 与交叉轴的起点对齐。

              2:align-content: flex-end; 与交叉轴的终点对齐。

              3:align-content: stretch; 轴线占满整个交叉轴。

              4:align-content: center; 默认值。与交叉轴的中点对齐

              5:align-content: space-between;与交叉轴的两端对齐,轴线之间的间隔平均分布;

              6:align-content: space-around;每根轴线两侧的间隔相等,即轴线之间的间隔比轴线与边框的间隔大一倍;


          flex常见属性总结

            Positional alignment
              justify-content: center; :居中排列
              justify-content: flex-start; /* 从行首起始位置开始排列 /
              justify-content: flex-end; / 从行尾位置开始排列 */


    flex 子元素属性

          order
            # 用于做容器的排序
            语法:
              .item{
                order:<num>; /*默认值为0*/
              }
            排序:
              从小至大


          flex-grow
            # 对剩余空进进行分配
            语法:
              .item{
                flex-grow:<num>; /*默认为0 不分配任何剩余空间*/
              }

          flex-shrink
            # 缩小比例
            语法:
              .item{
                flex-shrink:<num>; /*默认为1 如果空间不足,该项目将缩小 0不压缩*/
              }


          flex-basis
            # 当与flex-direction:row或flex-direction:row-revers搭配 当做宽(width)
            # 当与flex-direction:column或flex-direction:column-revers搭配 当做高(height)
            # 与width和height的区别:
              flex-basis优先级高于width与height
              如果flex-basis设为auto则优先级让给width与height
            语法:
              .item{
                flex-basis:<num>px/%...
                }

          flex
            # 简写属性 等于 flex-grow flex-shrink flex-basis
              flex:auto # 依照可用空间平均伸缩
                # flex-grow:1
                # flex-shrink:1
                # flex-basis:auto

              flex:initial  # 不能生长,单是缺乏空间时可以缩小
                # flex-grow:0
                # flex-shrink:1
                # flex-basis=auto

              flex:none  # 完全不能伸缩,僵化
                # flex-grow:0
                # flex-shrink:0
                # flex-basis=auto

              flex: num # 能屈能伸,依照num断定生长比例
                # flex-grow:num
                # flex-shrink:1
                # flex-basis:0

          align-self
            # 覆盖父节点的align-items属性 以当前为准
            可选属性:
              auto
                设置为父元素的 align-items 值,如果该元素没有父元素的话,就设置为 stretch。
              flex-start
                flex 元素会对齐到 cross-axis 的首端。
              flex-end
                flex 元素会对齐到 cross-axis 的尾端。
              center
                flex 元素会对齐到 cross-axis 的中间,如果该元素的 cross-size 的尺寸大于 flex 容器,将在两个方向均等溢出。
              baseline
                所有的 flex 元素会沿着基线对齐,The item with the largest distance between its cross-start margin edge and its baseline is flushed with the cross-start edge of the line。
              stretch
                flex 元素将会基于容器的宽和高,按照自身 margin box 的 cross-size 拉伸。

     

    搭配flex 自动margin盒子示例 

      # 一行使代码居中顶置等

     

    .father_box{
        display:flex;
        /* 以下属性仅为展示所用 */
        width: 100px;
        height: 100px;
        border: #000000 solid;
    }        
    
    .son1_box{
        margin-top: auto; /* 盒子会被推到地点下方 */
        /* 以下属性仅为展示所用 */
        width: 50px;
        height: 50px;
        border: red solid
    }                
    
    .son2_box{
        margin-left: auto; /* 盒子会被推到右边尾端 */
        /* 以下属性仅为展示所用 */
        width: 50px;
        height: 50px;
        border: blue solid
    }            
                
                
    
    .son3_box{
        margin-left: auto;
        margin-right: auto; /* 盒子会在父容器的顶端居中 */
        /* 以下属性仅为展示所用 */
        width: 50px;
        height: 50px;
        border: yellow solid
    }
    
    .son4_box{
        margin-top: auto;
        margin-bottom: auto; /* 盒子会在父容器的左侧居中 */
        /* 以下属性仅为展示所用 */
        width: 50px;
        height: 50px;
        border: yellow solid
    }
        
    .son5_box{
        margin-left: auto;
        margin-right: auto;
        margin-top: auto; /* 盒子会在父容器的下侧居中 */
        /* 以下属性仅为展示所用 */
        width: 50px;
        height: 50px;
        border: yellow solid
    }        
                
    .son6_box{
        margin-top: auto;
        margin-bottom: auto;
        margin-left: auto; /* 盒子会在父容器的右侧居中 */
        /* 以下属性仅为展示所用 */
        width: 50px;
        height: 50px;
        border: yellow solid
    }
    
    .son7_box{
        margin: auto; /* 盒子会在容器正中间 */
        /* 以下属性仅为展示所用 */
        width: 50px;
        height: 50px;
        border: yellow solid
    }

     

    Songzhibin
  • 相关阅读:
    郑码
    AutoCAD 安装
    China Mobile 移动
    CCB 建行
    Word基础
    Java 继承
    Java 封装(内部类)
    Java 类与对象
    Java 方法
    Java 数组
  • 原文地址:https://www.cnblogs.com/binHome/p/11819662.html
Copyright © 2011-2022 走看看