flex布局中 align-items 和 align-conten t的区别

参考资料:http://stackoverflow.com/questions/31250174/css-flexbox-difference-between-align-items-and-align-content

看了很多翻译的技术文档,这一块都讲得模糊不清,看到stackoverflow上有人提问后的回答觉得十分清晰,特来分享,有不当之处欢迎指正。

align-items

The align-items property applies to all flex containers, and sets the 
default alignment of the flex items along the cross axis of each flex 
line.

align-items属性适用于所有的flex容器,它是用来设置每个flex元素在侧轴上的默认对齐方式。

还有一位回答者的回答也很好,如下

align-items has the same functionality as align-content but the difference is that it works to center every single-line container instead of centering the whole container.

align-items和align-content有相同的功能,不过不同点是它是用来让每一个单行的容器居中而不是让整个容器居中。

如下图 

align-content

The align-content property only applies to multi-line flex containers, and aligns the flex lines within the flex container when there is extra space in the cross-axis.

align-content属性只适用于多行的flex容器,并且当侧轴上有多余空间使flex容器内的flex线对齐。

感觉这样翻译了之后还是略微有些抽象,不过有一个重点就是多行

下面我们来写一个小的例子。



1 <div class="child-1">
2     <div class="child-2">
3     </div>
4     <div class="child-2">
5     </div>
6 </div>

html结构如上。 
如果child-1的width设置为100px,child-2的width设置为30px,这样child-2会排列在一排上,具体的css如下



 1 <style type="text/css">
 2         *{
 3             margin:0px;
 4             padding: 0px;
 5         }
 6         div{
 7             border: 1px solid #0f0f0f;
 8         }
 9         .child-1{
10             margin: 30px auto;
11             display: flex;
12             width: 100px;
13             height: 60px;
14             justify-content: space-around;
15             align-content: center;
16         }
17         .child-2{
18             width: 30px;
19             height: 20px;
20         }
21     </style>

最终的结果如下图 

所以对于只有一行的flex元素,align-content是没有效果的,如果.child-1改用align-items:center;则会达到预期的效果,如下图 

但如果变成多行容器 
使用align-items时效果如下 
 
使用align-content效果如下 

学习资源:flex布局中 align-items 和 align-conten t的区别

时间: 2024-12-24 05:45:40

flex布局中 align-items 和 align-conten t的区别的相关文章

[ css 弹性盒子模型 flex-basis 属性 ] 弹性盒子模型flex布局中flex-basis属性讲解及实例演示的区别

设置或检索弹性盒伸缩基准值: 如果所有子元素的基准值之和大于剩余空间,则会根据每项设置的基准值,按比率伸缩剩余空间 计算值 – 绝对数:在flex-container主方向大小不足以容纳flex items的flex-basis总和时,浏览器会自动缩小它们 实例: <!DOCTYPE html> <html lang="zh-cmn-Hans"> <head> <meta charset="utf-8" /> <

[ css 弹性盒子模型 flex-shrink 属性 ] 弹性盒子模型flex布局中flex-shrink属性讲解及实例演示的区别

根据弹性盒子元素所设置的收缩因子作为比率来收缩空间 实例: <!DOCTYPE html> <html lang="zh-cmn-Hans"> <head> <meta charset="utf-8" /> <title>-webkit-flex-basis_CSS参考手册_web前端开发参考手册系列</title> <meta name="author" conten

[ css 弹性盒子模型 flex-grow 属性 ] 弹性盒子模型flex布局中flex-grow属性讲解及实例演示的区别

根据弹性盒子元素所设置的扩展因子作为比率来分配剩余空间 实例: <!DOCTYPE html> <html lang="zh-cmn-Hans"> <head> <meta charset="utf-8" /> <title>-webkit-flex-basis_CSS参考手册_web前端开发参考手册系列</title> <meta name="author" cont

[ css 弹性盒子模型 align-content 属性 ] 弹性盒子模型flex布局中align-content属性讲解及实例演示的区别

说明: 本属性适用于:多行的弹性盒模型容器 当伸缩容器的侧轴还有多余空间时,本属性可以用来调准「伸缩行」在伸缩容器里的对齐方式,这与调准伸缩项目在主轴上对齐方式的 <' justify-content '> 属性类似.请注意本属性在只有一行的伸缩容器上没有效果 实例: <!DOCTYPE html> <html lang="zh-cmn-Hans"> <head> <meta charset="utf-8" /&

[ css 弹性盒子模型 align-item 属性 ] 弹性盒子模型flex布局中align-item属性讲解及实例演示的区别

说明: 本属性适用于:flex容器 定义flex子项在flex容器的当前行的侧轴(纵轴)方向上的对齐方式 实例: <!DOCTYPE html> <html lang="zh-cmn-Hans"> <head> <meta charset="utf-8" /> <title>align-items_CSS参考手册_web前端开发参考手册系列</title> <meta name="

flex布局中flex-basis|flex-grow|flex-shrink

flex布局中flex-basis|flex-grow|flex-shrink flex-grow.flex-shrink.flex-basis这三个属性的作用是:在flex布局中,父元素在不同宽度下,子元素是如何分配父元素的空间的. 其中,这三个属性都是在子元素上设置的.注:下面讲的父元素,指以flex布局的元素(display:flex). flex-basis 该属性来设置该元素的宽度.当然,width也可以用来设置元素宽度.如果元素上同时设置了width和flex-basis,那么fle

flex布局中transform出错

在flex布局下,若应用transform 的动画的子元素没有使用进行定位,则动画过程中,子元素将相对display:flex的元素进行static定位 动画结束后位置正常: 修复代码只需要position:relative html伪代码 <flex> <div> <div> <div> <animation> css伪代码 animation{ position:relative; }

[ css 弹性盒子模型 align-content align-items属性 ] 弹性盒子模型flex布局中align-items 和align-content属性讲解及实例演示的区别

align-items align-items属性适用于所有的flex容器,它是用来设置每个flex元素在侧轴上的默认对齐方式,还有一位回答者的回答也很好,如下: align-items和align-content有相同的功能,不过不同点是它是用来让每一个单行的容器居中而不是让整个容器居中 align-content align-content属性只适用于多行的flex容器,并且当侧轴上有多余空间使flex容器内的flex线对齐,感觉这样翻译了之后还是略微有些抽象,不过有一个重点就是多行, 下面

flex布局中flex-shrink的计算规则

下面代码来自MDN html部分: <p>the width of content is 500px, flex-basic of flex item is 120px.</p> <p>A, B, C are flex-shrink:1. D and E are flex-shrink:2</p> <p>the width of D is not the same as A's</p> <div id="content