超详细!!最好用弹性布局flex之运用!

一、flex布局是什么?

  1. flex-direction 属性
  2. flex-wrap 属性
  3. justify-content 属性
  4. align-items 属性
  5. align-content 属性
  6. align-self 属性
  7. order 属性

Flex 布局是 Flexible Box 的缩写,意味着“弹性布局”,用来为盒状模型提供最大的灵活性。

任何一个容器都可以指定为 Flex 布局。

-- CSS部分
.demo {
	display:flex;
}

-- HTML部分
<div class="demo"></div>

行内元素也能设置 Flex 布局。


-- CSS部分
.demo {
	display:inline-flex;
}

-- HTML部分
<span class="demo"></span>

容器的设置

flex-direction 属性决定主轴方向。
主要有4个值:
row: 从左到右(默认)
column: 从上到下
row-reverse: 从右到左
column-reverse: 从下到上

-- CSS部分
.demo {
    display: flex;
    flex-direction:row;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

// 为了更好的观赏加上了margin-left值为20
.demo .son:nth-child(n + 2) {
    margin-left: 20px;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
    display: flex;
    flex-direction:column;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

.demo .son:nth-child(n + 2) {
    margin-top: 20px;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
    display: flex;
    flex-direction:row-reverse;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

.demo .son:nth-child(n + 2) {
    margin-left: 20px;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
    display: flex;
    flex-direction:column-reverse;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

.demo .son:nth-child(n + 2) {
    margin-bottom: 20px;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

flex-wrap属性决定着是否换行
主要有3个值:
wrap:换行。
nowrap:不换行。
wrap-reverse:换行,第一行在下面。

-- CSS部分
.demo {
    display: flex;
    flex-direction: row;
    /* 一旦子元素宽度超过父元素盒子就立马会换行 */
    flex-wrap: wrap;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
    display: flex;
    flex-direction: row;
    /* 一旦子元素宽度超过父元素盒子就立马会换行 */
    flex-wrap: nowrap;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
    display: flex;
    flex-direction: row;
    /* 一旦子元素宽度超过父元素盒子就立马会换行 */
    flex-wrap: wrap-reverse;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

justify-content属性用来设置主轴位置
主要有5个值:
flex-start(默认)主轴的从左到右
flex-end 主轴的从右到左
center 主轴的中心
space-around 平均分布,两边有空隙
space-between 平均分布,两边没有空隙

-- CSS部分
.demo {
    display: flex;
    justify-content:flex-start;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
    display: flex;
    justify-content:flex-end;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
    display: flex;
    justify-content:center;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
    display: flex;
    justify-content:space-around;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
    display: flex;
    justify-content:space-between;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

align-items 属性用来设置侧轴的位置
主要有4个值:
flex-start:向侧轴的起点对齐
flex-end:向侧轴的终点对齐
center:向侧轴的中心点对齐
stretch(默认值):如果项目未设置高度或设为auto,将占满整个容器的高度。

-- CSS部分
.demo {
    display: flex;
    justify-content:space-between;
    align-items:flex-start;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
    display: flex;
    justify-content:space-between;
    align-items:flex-end;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
    display: flex;
    justify-content:space-between;
    align-items:stretch;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    /* height: 100px; */
    background: skyblue;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
    display: flex;
    justify-content:space-between;
    align-items:center;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

align-content:属性定义了多根轴线的对齐方式。如果项目只有一根轴线,该属性不起作用。
主要6种属性:
flex-start:与交叉轴的起点对齐。
flex-end:与交叉轴的终点对齐。
center:与交叉轴的中点对齐。
space-between:与交叉轴两端对齐,轴线之间的间隔平均分布。
space-around:每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍。
stretch(默认值):轴线占满整个交叉轴。

-- CSS部分
.demo {
    display: flex;
    justify-content:space-between;
    align-content:flex-start;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
    display: flex;
    justify-content:space-between;
    align-content:flex-end;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
    display: flex;
    justify-content:space-between;
    align-content:center;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
    display: flex;
    justify-content:space-between;
    align-content:space-around;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
    display: flex;
    justify-content:space-between;
    align-content:space-between;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    background: skyblue;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
    display: flex;
    justify-content:space-between;
    align-content:stretch;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    /* height: 100px; */
    background: skyblue;
}

-- HTML部分
<div class="demo">
    <div class="son"></div>
    <div class="son"></div>
    <div class="son"></div>
</div>

在这里插入图片描述

空间分布:flex:number

-- CSS部分
.demo {
    display: flex;
    justify-content: space-between;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    flex: 1;
    height: 100px;
    text-align: center;
    background: skyblue;
}

-- HTML部分
<div class="demo">
    <div class="son">1</div>
    <div class="son">2</div>
    <div class="son">3</div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
    display: flex;
    justify-content: space-between;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    flex: 1;
    height: 100px;
    text-align: center;
    background: skyblue;
}

.demo .son:nth-child(2) {
    flex: 2;
    background: red;
}
-- HTML部分
<div class="demo">
    <div class="son">1</div>
    <div class="son">2</div>
    <div class="son">3</div>
</div>

在这里插入图片描述

align-self 属性用来设置在子元素身上的随意改变位置。
主要有3个值:
flex-start:侧轴的向顶部对齐
flex-end:侧轴的向底部对齐
center:侧轴向中心对齐

-- CSS部分
.demo {
   display: flex;
    justify-content: space-between;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    text-align: center;
    background: skyblue;
}

.demo .son:nth-child(2) {
    align-self: center;
}

-- HTML部分
<div class="demo">
    <div class="son">1</div>
    <div class="son">2</div>
    <div class="son">3</div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
   display: flex;
    justify-content: space-between;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    text-align: center;
    background: skyblue;
}

.demo .son:nth-child(2) {
    align-self: flex-start;
}

-- HTML部分
<div class="demo">
    <div class="son">1</div>
    <div class="son">2</div>
    <div class="son">3</div>
</div>

在这里插入图片描述

-- CSS部分
.demo {
   display: flex;
    justify-content: space-between;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    text-align: center;
    background: skyblue;
}

.demo .son:nth-child(2) {
    align-self: flex-end;
}

-- HTML部分
<div class="demo">
    <div class="son">1</div>
    <div class="son">2</div>
    <div class="son">3</div>
</div>

在这里插入图片描述

order 属性定义项目的排列顺序。数值越小,排列越靠前,默认为0。

-- CSS部分
.demo {
    display: flex;
    justify-content: space-between;
    width: 400px;
    height: 400px;
    background: pink;
}

.demo .son {
    width: 100px;
    height: 100px;
    text-align: center;
    background: skyblue;
}

.demo .son:nth-child(1) {
    order: 1;
}

.demo .son:nth-child(2) {
    order: 3;
}

.demo .son:nth-child(3) {
    order: 2;
}

-- HTML部分
<div class="demo">
    <div class="son">1</div>
    <div class="son">2</div>
    <div class="son">3</div>
</div>

在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值