align-items
CSS 的 **align-items
** 属性将 align-self
值设置到所有直接子元素的组上。在 flexbox 中,它控制 横轴 上项目的对齐方式。在网格布局中,它控制项目在其 网格区域 内的块轴上的对齐方式。
试用
下面的交互式示例演示了使用网格和 flex 布局的 align-items
的一些值。
语法
/* Basic keywords */
align-items: normal;
align-items: stretch;
/* Positional alignment */
/* align-items does not take left and right values */
align-items: center;
align-items: start;
align-items: end;
align-items: flex-start;
align-items: flex-end;
align-items: self-start;
align-items: self-end;
align-items: anchor-center;
/* 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: revert;
align-items: revert-layer;
align-items: unset;
Values
normal
-
此关键字的效果取决于我们所处的布局模式
- 在绝对定位的布局中,该关键字对替换的绝对定位框的行为类似于
start
,对所有其他绝对定位框的行为类似于stretch
。 - 在绝对定位布局的静态位置中,该关键字的行为类似于
stretch
。 - 对于 flex 项目,该关键字的行为类似于
stretch
。 - 对于网格项目,此关键字会导致类似于
stretch
的行为,但对于具有 纵横比 或固有大小的框,它会表现得像start
。 - 此属性不适用于块级框和表格单元格。
- 在绝对定位的布局中,该关键字对替换的绝对定位框的行为类似于
center
-
flex 项目的边距框在横轴上的行内居中。如果项目的横向大小大于 flex 容器,它将在两个方向上溢出相等。
start
-
项目在相应轴上,紧靠对齐容器的起始边。
end
-
项目在相应轴上,紧靠对齐容器的结束边。
self-start
-
项目在相应轴上,紧靠对齐容器的项目起始边。
self-end
-
项目在相应轴上,紧靠对齐容器的项目结束边。
baseline
,first baseline
,last baseline
-
所有 flex 项目都对齐,使得它们的 flex 容器基线 对齐。跨起始边距边和基线之间距离最大的项目与行的跨起始边对齐。
stretch
-
如果项目小于对齐容器,自动大小的项目将被均匀放大以填充容器,尊重项目的宽度和高度限制。
anchor-center
-
对于锚点定位元素,将项目沿块方向与关联的锚点元素的中心对齐。请参阅使用
anchor-center
在锚点上居中。 安全
-
与对齐关键字一起使用。如果选定的关键字意味着项目超出对齐容器导致数据丢失,则项目将根据对齐模式为
start
进行对齐。 不安全
-
与对齐关键字一起使用。无论项目和对齐容器的相对大小以及是否会发生导致数据丢失的溢出,都会尊重给定的对齐值。
还有两个为 flexbox 定义的值,因为它们基于flex 模型轴的概念,在网格布局中也能工作。
flex-start
-
仅在 flex 布局中使用,将 flex 项目与 flex 容器的 main-start 或 cross-start 边缘对齐。当在 flex 格式化上下文之外使用时,此值的行为与
start
相同。 flex-end
-
仅在 flex 布局中使用,将 flex 项目与 flex 容器的 main-end 或 cross-end 边缘对齐。当在 flex 格式化上下文之外使用时,此值的行为与
end
相同。
正式定义
正式语法
示例
CSS
我们以确保有两行或两列或项目的方式为容器和项目设置样式。我们定义了.flex
和.grid
类,它们将使用 JavaScript 应用于容器。它们设置容器的display
值,并更改其背景和边框颜色,提供布局已更改的额外指示。六个 flex 项目每个都有不同的背景颜色,第 4 个项目有两行长,第 6 个项目具有放大的字体。
.flex,
.grid {
height: 200px;
width: 500px;
align-items: initial; /* Change the value in the live sample */
border: solid 5px transparent;
gap: 3px;
}
.flex {
display: flex;
flex-wrap: wrap;
background-color: #8c8c9f;
border-color: magenta;
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, 100px);
background-color: #9f8c8c;
border-color: slateblue;
}
#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;
}
HTML
我们包含一个带有六个嵌套<div>
子元素的容器<div>
。为了简洁起见,表单的 HTML 和更改容器类的 JavaScript 已被隐藏。
<div id="container" class="flex">
<div id="item1">1</div>
<div id="item2">2</div>
<div id="item3">3</div>
<div id="item4">4<br />line 2</div>
<div id="item5">5</div>
<div id="item6">6</div>
</div>
结果
规范
规范 |
---|
CSS Box Alignment Module Level 3 # align-items-property |
CSS Flexible Box Layout Module Level 1 # align-items-property |
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。