美文网首页
【css3】盒模型

【css3】盒模型

作者: 二璇妹妹 | 来源:发表于2017-05-01 14:55 被阅读0次

    盒模型

    盒模型 包括margin部分,盒子(内容区)不包括margin部分

    css中的盒模型分两种

    w3c标准盒模型,盒子 = width+padding+border,width不包含padding、border
    IE6混杂模式盒模型,盒子 = width-padding-border,width包含padding、border

    css3拥有设置盒模型种类的属性

    • w3c标准模式盒子
      box-sizing:border-box
    • IE6混杂模式盒子
      box-sizing:content-box

    弹性盒子

    当页面需要适应不同的屏幕大小以及设备类型时,为了确保元素拥有恰当布局,我们要按比例分配元素宽高,因此要引入弹性盒子。
    弹性盒子由弹性容器(Flex container)和弹性子元素(Flex item)组成。
    为父级设置display: flex,父级变为一个弹性容器,一个弹性容器可以拥有多个弹性子元素。

    **设置在项目(子元素)上的6个属性:flex-grow、flex-shrink、flex-basis、order、align-self **

    • flex-grow
      按比例分配盒子剩余空间(参数可变)
      div{
      display: flex;
      width: 400px;
      height: 400px;
      border: 1px solid black;
      }
      div button{
      width: 100px;
      height: 50px;
      flex-grow: 1;
      }
      若有三个div,此时每个div会分配剩余宽度的1/3,即33.33...px,因此 每个div当前宽度约为133px。
    • flex-shrink
      将超出盒子的部分,按比例砍掉,元素越大,砍掉的也就越多
      缩减宽度 =(flex-shrink1 \* width1) /( flex-shrink1 \* width1 + flex-shrink2 \* width2) \* moreWidth
    • flex-basis
      伸缩基准值,即为元素占位,会覆盖掉width的值。当基准值相加大于容器宽度时,与flex-shink搭配使用,按所占盒子比例分配宽度。
      分配宽度 = ( flex-basis/(flex-basis相加) ) * 容器的宽度
    • flex
      flex-grow、flex-shrink、flex-basis的复合属性
      flex:3 ---> flex:3 1 0%;
      flexbox布局和原来的布局是两个概念,部分css属性在flexbox盒子里面不起作用,如 float, clear, column,vertical-align 等等
    • order
      定义项目排列顺序,数值越小,排列越靠前,默认值为0
    • align-self
      设置与其他项目不同的对齐方式(与align-items参数相同),默认值auto,表示继承父级align-items的属性。
      可覆盖。

    设置在父级(容器)上的6个属性:flex-direction、flex-wrap、flex-flow
    、justify-content、align-items、align-content

    • flex-direction
      决定主轴的方向,即子元素的排列方向

      flex-direction: row;            //(默认值)主轴为水平方向,起点在左端。
      flex-direction: row-reverse;    //主轴为水平方向,起点在右端。
      flex-direction: column;         //主轴为垂直方向,起点在上端。
      flex-direction: column-reverse; //主轴为垂直方向,起点在下端。
      
    • flex-wrap
      默认情况下,项目都排在轴线上。如果一条轴线排不下,就要用到flex-wrap换行。
      flex-wrap: nowrap; //(默认)不换行。
      flex-wrap: wrap; // 换行,第一行在上方。
      flex-wrap: nowrap; //换行,第一行在下方。

    • flex-flow
      flex-direction和flex-wrap的复合属性,默认值为row、nowrap。

    • justify-content
      定义了项目在主轴上的对齐方式,不管子元素有几列,都只看成一根轴线。
      假设主轴为从左到右
      justify-content: flex-start; //(默认)左对齐
      justify-content: flex-end; //右对齐
      justify-content: center; //居中
      justify-content: space-between;//两端对齐,项目之间的间隔都相等。
      justify-content: space-around; //每个项目两侧的间隔都相等,项目与边框有距离

    • align-items
      假设交叉轴从上到下
      align-items: stretch; //(默认)若项目未设置高度,将占满整个容器的高度。
      align-items: flex-start; //轴线分散排列在上部
      align-items: flex-end; //轴线分散排列在下部
      align-items: center; //轴线分散排列在中部
      align-items:baseline; //与项目的第一行文字的基线对齐,没有文字按底部对齐

    • align-content
      定义了多根轴线的对齐方式,若项目只有一根轴线,该属性不起作用。
      align-content: stretch; //(默认)轴线占满整个交叉轴。
      align-content: flex-start; //轴线紧挨着排列在上部
      align-content: flex-end; //轴线紧挨着排列在下部
      align-content: center; //轴线紧挨着排列在中部
      align-content: space-between; //与交叉轴两端排列,轴线之间的间隔平均分布
      align-content: space-around; //每根轴线两侧的间隔都相等,轴线与边框有距离

    相关文章

      网友评论

          本文标题:【css3】盒模型

          本文链接:https://www.haomeiwen.com/subject/nucxtxtx.html