弹性盒子中align-content与align-items的区别

弹性盒子(Flex box)是CSS3中的一个新布局模式
 
弹性盒子可以迅速有效地对一个容器中的子元素进行排列、对齐,对其设置分配空白的空间。
 
因为之前在学习中发现有两个属性似乎很相似,align-content与align-items都是在弹性盒子的侧轴(纵轴)方向上设置对齐方式的,但是并不知道他们的区别在哪里,所以通过博客来记录一下自己学习分析的过程。
 
通过查阅菜鸟教程,我引用一下里面的内容
 
 
align-content 属性用于修改 flex-wrap 属性的行为。类似于 align-items, 但它不是设置弹性子元素的对齐,而是设置各个行的对齐。
 
align-items 设置或检索弹性盒子元素在侧轴(纵轴)方向上的对齐方式。
  通过资料,对他们的区别有了大致的理解。在这里,我用相同的属性值center来对比他们之间的区别。
 
 <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。   

 

 

 

 

 

 

 

 

 
 
 
 
posted @ 2020-09-21 19:38  bubblesvkk-  阅读(314)  评论(0)    收藏  举报