CSS学习笔记--flex弹性布局

本文主要参考阮一峰Flex布局教程http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html

弹性布局给我们网页的布局方式提供了很大的便利,可以很方便的实现各种布局。

一、容器属性和项目属性

  容器属性

  容器属性指的是需要实现弹性布局的整体,也就是父布局,可设置的属性有以下6个:

  1.flex-direction:主轴的排列方式  (row | row-reverse | column | column-reverse) 

  2.flex-wrap:换行方式(nowrap | wrap | wrap-reverse

  3.flex-flow:flex-direction和flex-wrap的简写

  4.justify-content:主轴的对齐方式(flex-start | flex-end | center | space-between | space-around

  5.align-items:交叉轴的对齐方式(flex-start | flex-end | center | baseline | stretch

  6.align-content:多根轴线对齐方式(flex-start | flex-end | center | space-between | space-around | stretch

  项目属性

  项目属性指的是具体要如何排列的元素的属性,也就是子布局,可设置的属性有以下6个:

  1.order:项目的排列顺序,值越小越靠前。

  2.flex-grow:项目的放大比例,即轴线空间多余,该项目放大多少,等比放大。

  3.flex-shrink:项目的缩小比例,即轴线空间不足,该项目缩小多少,等比缩小。

  4.flex-basis:在分配多余空间之前,项目占据主轴空间,浏览器根据此属性再计算主轴的剩余空间。

  5.flex:flex-grow,flex-shrink,flex-basis的简写。

  6.align-self:单个项目与其他项目不同的对齐方式(auto | flex-start | flex-end | center | baseline | stretch)。

  补充

  1.flex-basis是在放大或缩小之前统计的,先统计完flex-basis的值再计算浏览器是否还有剩余空间来进行flex-grow和flex-shrink的放大缩小。

  2.flex的缺省值:

   默认:0 1 auto

   none:0 0 auto

   auto:1 1 auto

   num(单一数值):num 1 0%

   50%/500px(长度值):1 1 50%/500px

   num1 num2(两个数值):num1 num2 0%

   num 50%(数值+长度值):num 1 50%

二、圣杯布局

  

HTML:

<body>
    <div class="shengbei">
        <header></header>
        <div class="content">
            <div class="center"></div>
            <div class="left"></div>
            <div class="right"></div>
        </div>
        <footer></footer>
    </div>
</body>

CSS:

.shengbei{
    display: flex;
    height: 100vh;
    flex-direction: column;
}
header,footer{
    flex: 0 0 5em;
    background-color: gray;    
}
.content{
    flex: 1;
    display: flex;
    background-color: skyblue;
}
.center{
    flex: 1;
    background-color: slateblue;
}
.left,.right{
    flex: 0 0 5em;
    background-color: springgreen;
}

 

posted @ 2019-11-01 11:05  哈密瓜小王子  阅读(229)  评论(0编辑  收藏  举报