flex布局的align-items与align-content

Flex布局是平常中最常使用的布局方式之一

使用方式:

display:flex;

align-items根据flex布局中的副轴布局
常用align-items的属性:

属性值描述
flex-start让元素在副轴的首位
flex-end让元素在副轴的末尾
center让元素在副轴的中间

该文章主要描述的是align-content,并且与align-items的区别

align-content首先根据MDN的文档的描述
在这里插入图片描述
align-content也是用于flex布局的,但是 所谓的对于单行的弹性盒模型无效,指的是该弹性盒模型使用了flex-wrap:nowrap属性。
这句话的意思很简单:就是, align-content生效与否取决于flex-wrap:nowrap属性,而非页面上看到的单行

!!!flex-wrap的默认值是nowrap。

Demo效果验证这句话:

//页面大体结构就不写了,主要写元素结构
<main>
	<div></div>
	<div></div>
	<div></div>
<main>

<style>
main{
	width:50vw;
	height:80vh;
	display:flex;
	flex-direction: row;
    justify-content: space-between;
    align-content: center;//使用align-content属性
    flex-wrap: wrap;//关键
    border:1px solid red;
}
main div{
	width:5vw;
	height:5vw;
	background:green;
}
</style>

在这里插入图片描述
很明显,现在是单行,但是align-content仍然是生效的,因为 flex-wrap的值是wrap。
如果flex-wrap的值是nowrap的话,那么align-conten是不生效的。

在效果上,看起来与align-items差不多。那是因为align-items效果是偏向单行的,而align-content偏向于整个flex元素。

align-content的作用,与align-items的区别

align-content是控制flex布局中的元素整体的位置
属性:

属性值描述
stretch让每行、列元素在flex模型上自动拉伸
flex-start让每行、列元素在flex模型的首位
flex-end让每行、列元素在flex模型的末尾
center让每行、列元素在flex模型的中间
space-around让每行、列元素在flex模型中平均分布,与边框带有间距
space-between让每行、列元素在flex模型中平均分布,与边框没有间距

align-items是控制当前行、列中的元素位置。


<main>
	<div></div>
	<div style="height:10vw;"></div>
	<div></div>
<main>

<style>
main{
	width:50vw;
	height:80vh;
	display:flex;
	flex-direction: row;
    justify-content: space-between;
    align-content: center;
    align-items: flex-start;
    flex-wrap: wrap;
    border:1px solid red;
}
main div{
	width:5vw;
	height:5vw;
	background:green;
}

在这里插入图片描述
在这里插入图片描述
align-items:flex-end;元素位于该行的底部,这里就不演示了。

如果flex-wrap:nowrap的话,直接使用align-items控制元素的位置,因为flex-wrap:nowrap表示的是当前flex布局只有一行。


关于align-content平时遇到的问题就是flex布局,换行了之后,行与行之间有着较大的间距。
例如

	<main>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </main>
    <style>
        main{
            width: 50vw;
            height: 80vh;
            border: 1px solid red;
            display: flex;
            flex-direction: row;
            justify-content: space-between;
            align-items: flex-start;
            flex-wrap: wrap;
        }
        main li{
            width: 5vw;
            height: 5vw;
            background-color: green;
            list-style: none;
            border: 1px solid black;
        }
    </style>

效果图:
在这里插入图片描述
这是因为align-content: stretch ;作怪,stretch 是默认值,将每行的布局自动拉伸间距;
要解决这个问题,只需要加上align-content: flex-start;即可。

效果图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值