align-items和align-content之间的区别是什么?


当前回答

主要的区别是元素的高度不一样! 然后你可以看到在一行中,它们都是中心\结束\开始

其他回答

对齐项目和对齐内容的效果都是沿着交叉轴。

如果弯曲方向是行,那么主轴就是从左到右的,如果弯曲方向是列,那么主轴就是从上到下的。

在下面的例子中,我们假设弯曲方向是行,即主轴是从左到右,交叉轴是从上到下。

Align-content只有在有flex-wrap: wrap和容器中有多个flex-line时才有效。

如果有多个柔线,对齐内容的优先级高于对齐项。

什么是专线?

伸缩容器中伸缩项的每一行或每一列都是一条伸缩行。当容器中没有足够的空间时,就会出现多行,而flex项目将使用下一行(在flex方向:row;)来放入。在flex-direction:列中,它会将伸缩项添加到下一行。

例子

默认情况下,flex是一个灵活的容器,即它可以容纳任意数量的元素,除非我们指定了flex-wrap: wrap。如果没有wrap, flex-items将溢出容器(如果flex-direction为row)。

align-content例子

.container{ border: 5px solid #000; height: 100vh; display: flex; flex-wrap: wrap; align-content: flex-end; } .box{ height:100px; font-size: 2rem; width: 33.33%; } .box1{ background: purple; } .box2{ background: #ff8c00; } .box3{ background: lime; } .box4{ background: #008080; } .box5{ background-color: red; } <div class="container"> <div class="box box1">box 1</div> <div class="box box2">box 2</div> <div class="box box3">box 3</div> <div class="box box4">box 4</div> <div class="box box5">box 5</div> </div>

在上面的例子中,如果有flex-wrap: no-wrap,那么align-content不会影响我们的布局。


对齐项目例子

align-items属性确定伸缩项如何沿交叉轴在伸缩线内定位。

.container{ border: 5px solid #000; height: 100vh; display: flex; flex-wrap: wrap; align-items: flex-end; } .box{ height:100px; font-size: 2rem; width: 33.33%; } .box1{ background: purple; } .box2{ background: #ff8c00; } .box3{ background: lime; } .box4{ background: #008080; } .box5{ background-color: red; } <div class="container"> <div class="box box1">box 1</div> <div class="box box2">box 2</div> <div class="box box3">box 3</div> <div class="box box4">box 4</div> <div class="box box5">box 5</div> </div>

如果align-content和align-items被声明在具有flex-wrap: wrap属性的容器上,如果有多个flex-line,则align-content属性的优先级高于align-items。

align-content and align-items priority example .container{ border: 5px solid #000; height: 100vh; display: flex; flex-wrap: wrap; align-content: flex-end; align-items: flex-start; } .box{ height:100px; font-size: 2rem; width: 33.33%; } .box1{ background: purple; } .box2{ background: #ff8c00; } .box3{ background: lime; } .box4{ background: #008080; } .box5{ background-color: red; } <div class="container"> <div class="box box1">box 1</div> <div class="box box2">box 2</div> <div class="box box3">box 3</div> <div class="box box4">box 4</div> <div class="box box5">box 5</div> </div>

主要的区别是元素的高度不一样! 然后你可以看到在一行中,它们都是中心\结束\开始

我已经在浏览器上检查过了。

Align-content可以更改行方向的行高或列的宽度(当它的值为拉伸时),或者在行之间或行周围添加空格(空格之间、空格周围、flex-start和flex-end值)。

对齐-项目可以更改项目的高度或线区域内的位置。当项目没有被换行时,它们只有一行,它的区域总是被拉伸到flex-box区域(即使项目溢出),align-content对单行没有影响。因此,它对没有被换行的项目没有影响,而只对对齐项目有影响——当所有项目都在一条线上时,项目可以改变项目的位置或拉伸它们。

但是,如果它们被自动换行,则每行内有多行和项目。如果每一行的所有项都具有相同的高度(对于行方向),那么该行的高度将等于这些项的高度,并且更改align-items值不会看到任何影响。

因此,如果你想通过align-items来影响项目,当你的项目被包装并且具有相同的高度(对于行方向)时,首先你必须使用align-content with stretch value来扩展线条区域。

根据我在这里的理解:

当您使用align-item或justify-item时,您正在分别沿列轴或行轴调整网格项中的内容。

但是: 如果使用align-content或justify-content,则是沿着列轴或行轴设置网格的位置。当你在一个更大的容器中有一个网格,宽度或高度是固定的(使用px)时,就会发生这种情况。

来自flexboxfroggy.com的例子:

这将花费你10-20分钟,在21级你会找到你的问题的答案。

Align-content决定行与行之间的间距 Align-items决定在容器中如何将项目作为一个整体进行对齐。 当只有一行时,align-content没有作用