弹性盒子中align-content与align-items的区别
align-content属性用于修改flex-wrap属性的行为。类似于align-items, 但它不是设置弹性子元素的对齐,而是设置各个行的对齐。align-items设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式。
<div class="boxWrap"> <div class="box"></div> </div>
.boxWrap{ width: 200px; height: 200px; border: 1px solid red; margin: 200px auto; display: flex; align-content: center; } .box{ width: 50px; height: 50px; background-color: lightblue; }

当对弹性盒子中单个盒子设置 align-content: center 时,此时并没有在侧轴上居中。
当修改为align-items: center时,此盒子在侧轴上居中了。

为了考虑是否为单个盒子的因素时,再增加一个盒子进行试验。‘
<div class="boxWrap"> <div class="box1"></div> <div class="box2"></div> </div>
.boxWrap{ width: 200px; height: 200px; border: 1px solid red; margin: 200px auto; display: flex; align-content: center; } .box1{ width: 50px; height: 50px; background-color: lightblue; } .box2{ width: 50px; height: 50px; background-color: lightcoral; }

此时可看到当对弹性盒子中两个默认横向排列的设置align-content: center的盒子没有在纵轴上居中显示。

对弹性盒子中两个盒子设置align-items: center仍然居中显示。
对此,我对弹性盒子设置了教程中所说的 flex-wrap属性, 这个属性是用于指定弹性盒子的子元素换行方式的,该情况下弹性子项溢出的部分会被放置到新行,子项内部会发生断行即多行显示,因此我对前面一个设置一个较大的magin值,使得他们分行显示。
当对弹性盒子设置flex-wrap属性,对前面的盒子设置较大的margin值(margin-right:150px)使盒子分行显示时,他们两者的对比。
1.设置align-content:center,两个盒子整体在纵轴上居中对齐。

2.设置align-items: center,分为2行,纵轴上将多余的空间按照行数平分,各小盒子在各自的行上面居中对齐。

特殊情况:对设置align-content:center的弹性盒子,对其设置flex-wrap: wrap时(此时仍为单行显示),也可以居中显示。

结论:
align-content是针对弹性盒子中的整体子项来起作用的,基本单位是里面整体的子项,当子项为多行或者子项为单行对其设置flex-wrap: wrap时可以整体居中显示,即起作用。
align-items是针对弹性盒子中每一个单独的子项起作用的,在所有情况下都居中显示。因此大多数情况下更多的是用 align-items。

浙公网安备 33010602011771号