CSS参考手册
灵活的框布局 | Flexible Box Layout
对齐项 | align-items
CSSalign-items
属性定义浏览器如何沿其容器的交叉轴在Flex项之间和周围分配空间。这意味着它的作用就像justify-content
,而不是在垂直方向。
/* Basic keywords */
align-items: normal;
align-items: stretch;
/* Positional alignment */
align-items: center; /* Pack items around the center */
align-items: start; /* Pack items from the start */
align-items: end; /* Pack items from the end */
align-items: flex-start; /* Pack flex items from the start */
align-items: flex-end; /* Pack flex items from the end */
align-items: self-start;
align-items: self-end;
align-items: left; /* Pack items from the left */
align-items: right; /* Pack items from the right */
/* Baseline alignment */
align-items: baseline;
align-items: first baseline;
align-items: last baseline; /* Overflow alignment (for positional alignment only) */
align-items: safe center;
align-items: unsafe center;
/* Global values */
align-items: inherit;
align-items: initial;
align-items: unset;
与align-content
属性的区别,在于它指定了当前 flex 容器的行中的项的对齐方式, 而对齐内容指定行本身的对齐方式。
初始值 |
stretch |
---|---|
适用于 |
柔性容器 |
遗传 |
没有 |
媒体 |
视觉 |
计算值 |
作为指定 |
动画类型 |
离散的 |
规范的顺序 |
形式语法定义的独特的非模糊顺序 |
语法
值
normal
此关键字的效果取决于我们所处的布局模式:
- 关键字的行为类似于已替换的绝对定位框的
start
, 以及其他所有绝对定位框上的stretch
。
- 在绝对定位布局的静态位置中,关键字表现为
stretch
.
- 对于Flex项,关键字表现为
stretch
.
- 对于网格项,此关键字将导致类似于
stretch
,但具有高宽比或内部大小的盒子除外,其将被处理为start
.
- 该属性不适用于块级框和表格单元格。
flex-start
Flex项目的交叉开始边缘边缘与线条的交叉起始边缘一起被刷新。
flex-end
Flex项目的交叉边缘边缘与线条的交叉边缘齐平。center
Flex项目的边距框在交叉轴线上居中。如果物品的交叉尺寸大于柔性容器,则它将在两个方向上均等地溢出。
start
物品在适当的轴线上朝向对齐容器的起始边缘彼此齐平地包装。
end
物品在适当的轴线上朝向对齐容器的端部边缘彼此齐平地包装。center
物品朝向对齐容器的中心彼此齐平地包装。
left
物品朝向对齐容器的左边缘彼此齐平。如果属性的轴不与内联轴平行,则该值的行为就像start
。
right
物品在适当的轴线上朝向对齐容器的右边缘彼此齐平。如果属性的轴不与内联轴平行,则该值的行为就像start
。
self-start
物品与物品开始侧的对齐容器的边缘在相应的轴上齐平。
self-end
物品与物品端侧的对齐容器的边缘齐平地包装在相应的轴上。baselinefirst baseline
last baseline
所有弹性项目都对齐,以使其基线对齐。交叉开始边缘边缘与其基线之间距离最大的项目与线的交叉起始边缘齐平。
stretch
Flex项目被拉伸,例如项目边距框的交叉尺寸与线条相同,同时考虑宽度和高度约束。
safe
如果项目的大小溢出对齐容器,则对齐项目就像对齐模式一样对齐start
。
unsafe
无论物品和对齐容器的相对大小如何,给定的对齐值都是可以接受的。
形式语法
flex-start | flex-end | center | baseline | stretch
例
CSS
#container {
height:200px;
width: 240px;
align-items: center; /* Can be changed in the live sample */
background-color: #8c8c8c;
}
.flex {
display: flex;
flex-wrap: wrap;
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, 50px);
}
div > div {
box-sizing: border-box;
border: 2px solid #8c8c8c;
width: 50px;
display: flex;
align-items: center;
justify-content: center;
}
#item1 {
background-color: #8cffa0;
min-height: 30px;
}
#item2 {
background-color: #a0c8ff;
min-height: 50px;
}
#item3 {
background-color: #ffa08c;
min-height: 40px;
}
#item4 {
background-color: #ffff8c;
min-height: 60px;
}
#item5 {
background-color: #ff8cff;
min-height: 70px;
}
#item6 {
background-color: #8cffff;
min-height: 50px;
font-size: 30px;
}
select {
font-size: 16px;
}
.row {
margin-top: 10px;
}
HTML
<div id="container" class="flex">
<div id="item1">1</div>
<div id="item2">2</div>
<div id="item3">3</div>
<div id="item4">4</div>
<div id="item5">5</div>
<div id="item6">6</div>
</div>
<div class="row">
<label for="display">display: </label>
<select id="display">
<option value="flex">flex</option>
<option value="grid">grid</option>
</select>
</div>
<div class="row">
<label for="values">align-items: </label>
<select id="values">
<option value="normal">normal</option>
<option value="flex-start">flex-start</option>
<option value="flex-end">flex-end</option>
<option value="center" selected>center</option>
<option value="baseline">baseline</option>
<option value="stretch">stretch</option>
<option value="start">start</option>
<option value="end">end</option>
<option value="self-start">self-start</option>
<option value="self-end">self-end</option>
<option value="left">left</option>
<option value="right">right</option>
<option value="first baseline">first baseline</option>
<option value="last baseline">last baseline</option>
<option value="safe center">safe center</option>
<option value="unsafe center">unsafe center</option>
<option value="safe right">safe right</option>
<option value="unsafe right">unsafe right</option>
<option value="safe end">safe end</option>
<option value="unsafe end">unsafe end</option>
<option value="safe self-end">safe self-end</option>
<option value="unsafe self-end">unsafe self-end</option>
<option value="safe flex-end">safe flex-end</option>
<option value="unsafe flex-end">unsafe flex-end</option>
</select>
</div>
结果
规范
Specification |
Status |
Comment |
---|---|---|
CSS Box Alignment ModuleThe definition of 'align-items' in that specification. |
Working Draft |
Adds the first | last ? baseline, self-start, self-end, start, end, left, right, unsafe | safe values. |
CSS Flexible Box Layout ModuleThe definition of 'align-items' in that specification. |
Candidate Recommendation |
Initial definition |
浏览器兼容性
Feature |
Chrome |
Edge |
Firefox (Gecko) |
Internet Explorer |
Opera |
Safari |
---|---|---|---|---|---|---|
Basic support |
21.0-webkit1 |
(Yes)-webkit (Yes) |
20.0 (20.0)2 |
11.03 |
12.10 |
7.0-webkit |
space-evenly, first/last baseline, start, end, left, right |
? |
? |
45 (45) |
? |
? |
? |
Feature |
Android |
Android Webview |
Edge |
Firefox Mobile (Gecko) |
IE Mobile |
Opera Mobile |
Safari Mobile |
Chrome for Android |
---|---|---|---|---|---|---|---|---|
Basic support |
4.4 |
(Yes) |
(Yes)-webkit (Yes) |
20.0 (20.0)2 |
No support |
12.10 |
7.0-webkit |
? |
space-evenly, first/last baseline, start, end, left, right |
? |
? |
? |
45.0 (45) |
? |
? |
? |
? |
灵活的框布局 | Flexible Box Layout相关
层叠样式表( Cascading Style Sheets )是一种用来表现 HTML 或 XML 等文件样式的计算机语言。CSS 不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。