弹性布局

Posted a155-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了弹性布局相关的知识,希望对你有一定的参考价值。

弹性容器:在元素上设置了display:flex属性的即为弹性容器,弹性容器上的弹性子元素就会按照弹性布局的方式进行布局

弹性子元素:弹性容器上的直接字元素即为弹性子元素

注意:默认弹性子元素只会排成1行或1列,不会换行。

一、

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            #parent{
                /*设置id为parent的元素为弹性容器。里面的直接子元素的布局方式即为弹性布局*/
                display: flex;
                width: 900px;
                height: 900px;
                background: chocolate;
                margin: 0 auto;
                /*弹性布局主轴:确定子元素的布局是水平排布还是竖直排布*/
                /*设置主轴的方向:flex-direction       侧轴为主轴的垂直方向
                 row(默认值):子元素从左到右进行排布
                 row-reverse:子元素从右到左进行排布
                 column:子元素从上到下进行排布
                 column:子元素从下到上进行排布
                 * */
                
                flex-direction:row;
                /*设定主轴的排布方式:
                 justify-content
                 flex-start(默认)向主轴的开始端靠拢
                 flex-end:向主轴的末尾靠拢
                 center:向主轴的中间靠拢
                 space-between:平均分布,两边没有边距
                 space-around:平均分布两边有边距,两边的边距是中间的一半
                 space-evenly:平均分布,两边的边距和中间的一样
                 * */
                justify-content: space-evenly;
                /*设定侧轴的排布方式(单行)
                 align-items:
                 stretch(默认值):拉伸。在不设置子元素高度的情况下,默认会拉伸到跟父元素一致的的高度。
                 flex-start:靠近侧轴的开端
                 flex-end:靠近侧轴的末端
                 center:在侧轴居中
                 * */
                align-items: center;
            }
            .child{
                width: 200px;
                height: 200px;
                background:pink;
            }
        </style>
    </head>
    <body>
        <div id="parent">
            <!--div是块级元素,默认占据一整行-->
            <div class="child" style="background: yellow;">1</div>
            <div class="child" style="background: violet;">2</div>
            <div class="child" style="background: cornflowerblue;">3</div>
        </div>
    </body>
</html>

二、

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            .parent{
                width: 600px;
                height: 600px;
                background:blanchedalmond;
                margin: 0 auto;
                display: flex;
                /*设置弹性可以换行
                 flex-wrap
                 nowrap(默认)不换行
                 wrap换行
                 * */
                flex-wrap: wrap;
                /*设置侧轴的多行排布
                 stretch(默认拉伸)
                 flex-start:靠近侧轴的开端
                 flex-end:靠近侧轴的结束端
                 space-between:平均分布,两边没有间距
                 space-around:平均分布,两边间距是中间的一半
                 space-evenly:平均分布,两边的间距和中间一样
                 * */
                align-content: flex-start;
            }
            .child{
                width: 200px;
                height: 200px;
                
            }
        </style>
    </head>
    <body>
        <div class="parent">
            <div class="child" style="background: yellow;">1</div>
            <div class="child" style="background: violet;">2</div>
            <div class="child" style="background: cornflowerblue;">3</div>
            <div class="child" style="background: yellow;">1</div>
            <div class="child" style="background: violet;">2</div>
            <div class="child" style="background: cornflowerblue;">3</div>
        </div>
    </body>
</html>

剩余空间的分布

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            html,body{
                height: 100%;
            }
            .page{
                width: 100%;
                height: 100%;
                background: blueviolet;
                display: flex;
            }
            .lanmu{
                background: greenyellow;
                /*flex可以定义剩余空间的占据情况*/
                /*分配剩余空间的2份(比例)*/
                flex: 2;
            }
            .main{
                background: teal;
                /*分配剩余空间的1份*/
                flex: 1;
            }
            .ad{
                width: 200px;
                background: darkred;
            }
        </style>
    </head>
    <body>
        <div class="page">
            <div class="lanmu">栏目</div>
            <div class="main">主要内容</div>
            <div class="ad">广告</div>
        </div>
    </body>
</html>

弹性子元素的排布

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
        <style type="text/css">
            #parent{
                /*设置id为parent的元素为弹性容器。里面的直接子元素的布局方式即为弹性布局*/
                display: flex;
                width: 900px;
                height: 900px;
                background: chocolate;
                margin: 0 auto;
                
            }
            .child{
                width: 200px;
                height: 200px;
                background:pink;
            }
            .c3{
                /*单独对侧轴的子元素进行排布
                 flex-start
                 flex-end
                 stretch
                 center
                 * */
                align-self: center;
            }
        </style>
    </head>
    <body>
        <!--order: 在子元素上设置order ,可以按照从小到大的方式进行排序-->
        <div id="parent">
            <!--div是块级元素,默认占据一整行-->
            <div class="child" style="background: yellow; order: 5;">1</div>
            <!--一个元素可以有多个类-->
            <div class="child c3" style="background: violet; order: 3;">2</div>
            <div class="child" style="background: cornflowerblue;order: 1;">3</div>
            <div class="child" style="background: violet;order: 2;">4</div>
            <div class="child" style="background: cornflowerblue;order: 4;">5</div>
        </div>
    </body>
</html>

 

以上是关于弹性布局的主要内容,如果未能解决你的问题,请参考以下文章

在css中如何声明弹性

Flex弹性盒子布局

弹性布局(Flex)布局介绍

css弹性布局是啥

弹性盒布局

弹性盒布局