Flex弹性布局

概述

Flex布局,可以简便、完整、响应式地实现各种页面布局。
目前,它已经得到了所有浏览器的支持。
这意味着,现在就能很安全地使用这项功能。
作用在flex容器上作用在flex子项上
flex-directionorder
flex-wrapflex-grow
flex-flowflex-shrink
justify-contentflex-basis
align-itemsflex
align-contentalign-self

作用于自己身上的flex CSS属性

flex-direction

flex-direction用来控制子项整体布局方向。
是从左往右还是从右往左,时从上往下还是从下往上。
取值含义
row默认值,显示为行。方向为当前文档水平流方向,默认情况下时从左往右
row-reverse显示为行。但方向和row属性值时反的
column显示为列
column-reverse显示为列。但方向和colummn属性值是反的

flex-dirction
示例:

<style>
    .fu{
        display: flex;
        width: 300px;
        height: 300px;
        border: 1px solid green;
        margin: 30px auto;
        /*之后的修改属性取值都是只修改下面这一句
        其他的不变,若有修改会标出
        flex-direction: row;*/
    }
    .fu div{
        width: 200px;
        height: 200px;
        border: 1px solid red;
    }
</style>
<body>
    <div class="fu">
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
    </div>
</body>

不添加flex-dirction属性(就像上面代码那样,注释了):
在这里插入图片描述
注意:此时空间会自适应,但是如果flex内的容器的内容过多时,那么它就算是溢出也不会自动换行。

属性:flex-dirction:row
flex-direction:row

属性:flex-dirction:row-reverse

flex-direction:row-reverse
属性:flex-direction:column
flex-dirction:column

属性:flex-dirction:column-reverse

在这里插入图片描述

flex-wrap

flex-wrap用来控制子项整体单行显示还是换行显示。
取值含义
nowrap默认值,表示单行显示,不换行。
wrap宽度不足换行显示
wrap-reverse宽度不足换行显示,但是是从下往上开始,也就是原本换行在下面的子项现在跑到上面。

实例:

<style>
    .fu{
        display: flex;
        width: 300px;
        height: 300px;
        border: 1px solid green;
        margin: 30px auto;
        flex-direction: row;
        /* 之后的修改属性取值都是只修改下面这一句
            其他的不变,若有修改会标出
        flex-wrap: nowrap; */
    }
    .fu div{
        width: 50px;
        height: 50px;
        border: 1px solid red;
    }
</style>
<body>
    <div class="fu">
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
        <div>5</div>
        <div>6</div>
        <div>7</div>
        <div>8</div>
        <div>9</div>
        <div>10</div>
        <div>11</div>
    </div>
</body>

不添加flex-wrap属性
在这里插入图片描述
属性:flex-wrap:nowrap
由于是默认值,所以,基本与不写一样。
在这里插入图片描述
属性:flex-wrap:wrap
在这里插入图片描述
属性:flex-wrap:warp-reverse
在这里插入图片描述

flex-flow

flex-flow属性是flex-direction和flex-wrap的缩写。
表示flex布局的flow流动特性。
第一个值表示方向,第二个值表示换行,中间用空格隔开。

示例:

<style>
    .fu{
        display: flex;
        width: 300px;
        height: 300px;
        border: 1px solid green;
        margin: 30px auto;
		/*下面两个属性可以直接缩写成:
		flex-flow:colum wrap-reverse */
        flex-direction: column;
        flex-wrap: wrap-reverse; 
    }
    .fu div{
        width: 50px;
        height: 50px;
        border: 1px solid red;
    }
</style>
<body>
    <div class="fu">
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
        <div>5</div>
        <div>6</div>
        <div>7</div>
        <div>8</div>
        <div>9</div>
        <div>10</div>
        <div>11</div>
    </div>
</body>

都长这样:
在这里插入图片描述

justify-content

justify-content属性决定了主轴方向上子项的对齐方式和分布方式。
取值含义
flex-strart默认值,表现为起始位置对齐
felx-end表现为结束位置对齐
center表现为居中对齐
space-between表现为两端对齐。between的意思是多余的空白间距只在元素中间区域分配
space-aroundaround的意思是每个flex子项两侧都是环绕互不干扰的等宽的空白间距,最终视觉上边缘两侧的空白只有中间空白宽度一半。
space-evenlyevenly是均称、平等的意思。也就是视觉上,每个flex子项两侧空白间距完全相等。

示例:

<style>
    .fu{
        display: flex;
        width: 300px;
        height: 300px;
        border: 1px solid green;
        margin: 30px auto;
        justify-content: flex-start;
    }
    .fu div{
        width: 50px;
        height: 50px;
        border: 1px solid red;
    }
</style>
<body>
    <div class="fu">
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
    </div>
</body>

属性:justify-content:felx-start(由于是默认,所以不写的话,长的基本也一样)
在这里插入图片描述

属性:justify-content:flex-end
在这里插入图片描述
属性:justify-content:center
在这里插入图片描述
属性:justify-content:space-between
在这里插入图片描述
属性:justify-content:space-around
在这里插入图片描述
属性:justify-content:space-evenly
在这里插入图片描述
注:
around是子容器的周边是固定值,头或尾的空白和两个容器之间的距离不同(一般头或尾的距离是容器之间的距离的一半)。
evenly是所有的空白平均分配,就算是头和尾,也与两个容器之间的距离相同。

align-items

align-items中的items指的就是flex子项们。
因此align-items指的就是felx子项们相对于flex容器在侧轴方向上的对齐方式。
取值含义
stretch默认值,flex子项拉伸
flex-start表现为容器顶部对齐
flex-end表现为容器底部对齐
center表现为垂直居中对齐

示例:

<style>
    .fu{
        display: flex;
        width: 300px;
        height: 300px;
        border: 1px solid green;
        margin: 30px auto;
        justify-content: space-evenly;
        align-items: stretch;
    }
    .fu div{
        width: 50px;
        /* 此时高度被取消 内部容器会高度自适应父容器*/
        /* height: 50px; */
        border: 1px solid red;
        text-align: center;
    }
</style>
<body>
    <div class="fu">
        <div>最短的文本</div>
        <div>这一条是四条文本中最最最长的一条</div>
        <div>这一条就一般般还好</div>
        <div>这一条也是一般般啦</div>
    </div>
</body>

属性:align-items:stretch(由于是默认,所以写与不写差不多)
在这里插入图片描述
属性:align-items:flex-start
在这里插入图片描述
属性:align-items:flex-end
在这里插入图片描述
属性:align-items:center
在这里插入图片描述

align-content

align-content可以看出和justify-content是相似且对立的属性。
如果所有flex子项只有一行,则align-content属性是没有任何效果的。
取值含义
stretch默认值。每行felx子元素都等比例拉伸。例:如果共有两行flex子元素,则每行拉伸高度是50%
flex-start表现为起始位置对齐
flex-end表现为结束位置对齐
center表现为居中对齐
space-between表现为两端对齐
space-around每一行元素上下都享有独立不重叠的空白空间。
space-evenly每一行元素都完全上下等分

示例:

<style>
    .fu{
        display: flex;
        width: 300px;
        height: 300px;
        border: 1px solid green;
        margin: 30px auto;
        flex-flow: row wrap;
        justify-content: space-evenly;
        align-items: flex-start;
        align-content: stretch;
    }
    .fu div{
        width: 50px;
        /* 此时高度被取消 */
        /* height: 50px; */
        border: 1px solid red;
        text-align: center;
    }
</style>
</head>
<body>
    <div class="fu">
        <div>最短的文本</div>
        <div>这一条是四条文本中最最最长的一条</div>
        <div>这一条就一般般还好</div>
        <div>这一条也是一般般啦</div>
        <div>最短的文本</div>
        <div>这一条是四条文本中最最最长的一条</div>
        <div>这一条就一般般还好</div>
        <div>这一条也是一般般啦</div>
    </div>
</body>

属性: align-content:stretch(默认,设置与不设置基本相同)
在这里插入图片描述
属性:align-content:flex-start
在这里插入图片描述
属性:align-content:flex-end
在这里插入图片描述
属性:align-content:center
在这里插入图片描述
属性:align-content:space-between
在这里插入图片描述
属性:align-content:space-around
在这里插入图片描述
属性:align-content:space-evenly
在这里插入图片描述

-------------------------------到此flex针对父元素的属性,基本介绍完了--------------------------------------

作用于子项身上的flex CSS属性

取值含义
order可以通过设置order改变某一个flex子项的排列位置。所有flex子项的默认order属性值是0
flex-grow属性中的grow是扩展的意思,扩展的就是flex子项所占据的宽度,扩展所侵占的空间就是出去元素外的剩余的空白间隙。默认值为0
flex-shrink属性中的shrink是“收缩”的意思,flex-shrink主要处理当flex容器空间不足的时候,单个元素的收缩比例。默认值是1。
flex-basisflex定义了分配剩余空间之前元素的默认大小
flexflex属性是flex-grow,flex-shrink和flex-basis的缩写。
align-selfalign-self指的是控制单独某一个flex子项的垂直对齐方式。

order

示例:

<style>
    .fu{
        display: flex;
        width: 300px;
        height: 300px;
        border: 1px solid #000;
        margin: 50px auto;
    }
    .fu div{
        width: 50px;
        border: 1px solid red;
    }
    /* .fu div:first-child{
        order: 1;
    } 
    .fu div:last-child{
        order:2;
    }*/
</style>
<body>
    <div class="fu">
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
        <div>5</div>
    </div>
</body>

未注释之前
在这里插入图片描述

注释之后:
在这里插入图片描述

flex-grow

示例:

<style>
    .fu{
        display: flex;
        width: 300px;
        height: 300px;
        background: #000;
        margin: 50px auto;
    }
    .fu div{
        width: 50px;
        background: red;
    }
    /* .fu div:first-child{
        flex-grow:0.4;
        background: blue;
    }
    .fu div:nth-child(3){
        flex-grow:0.2;
        background: #fff;
    }
    .fu div:last-child{
        flex-grow: 0.4;
        background: green;
    } */
</style>
<body>
    <div class="fu">
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
        <div>5</div>
    </div>
</body>

未注释之前:
在这里插入图片描述
注释之后:
在这里插入图片描述
如果加起来数值大于1的话,则将剩余的空白按比例分配。

flex-shrink

<style>
    .fu{
        display: flex;
        width: 300px;
        height: 300px;
        border: 1px solid #000;
        margin: 50px auto;
    }
    .fu div{
        width: 50px;
        border: 1px solid red;
    }
    /* .fu div:first-child{
        flex-shrink: 0;
        border:1px solid blue
    } */
</style>
<body>
    <div class="fu">
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
        <div>5</div>
        <div>6</div>
        <div>7</div>
        <div>8</div>
        <div>9</div>
        <div>10</div>
    </div>
</body>

为注释之前:
flex-shrink:0 意味着不收缩
在这里插入图片描述
注释之后:
在这里插入图片描述
flex-shrink:2 意味着收缩的是比其他的容器收缩的2倍
在这里插入图片描述

align-self

示例:

<style>
    .fu{
        display: flex;
        width: 300px;
        height: 300px;
        border: 1px solid #000;
        margin: 50px auto;
        align-items: flex-start;
    }
    .fu div{
        width: 50px;
        border: 1px solid red;
    }
    /* .fu div:first-child{
        border:1px solid blue;
        align-self: flex-end;
    } */
</style>
<body>
    <div class="fu">
        <div>1</div>
        <div>2</div>
        <div>3</div>
        <div>4</div>
        <div>5</div>
    </div>
</body>

未注释之前:
在这里插入图片描述
注释之后:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值