CSS - align-self 属性



CSS align-self 属性控制使用 flexbox 或网格布局的容器中单个项的对齐方式。虽然 align-items 用于为容器中的所有项设置默认对齐方式,但 align-self 会覆盖特定项的对齐方式。

在 flexbox 中,项目在交叉轴上对齐,而在网格中,该属性将项目对齐网格区域内。

语法


align-self: auto | stretch | center | flex-start | flex-end | baseline | initial | inherit;

属性值

描述
auto 该元素继承其父容器的 align-items 属性,如果没有父容器,则使用 “stretch”违约。
stretch 元素放置在适合容器的位置。
center 该元素被放置在容器的中心位置。
flex-start 该元素被放置在容器的起始位置。
flex-end 该元素被放置在容器的结束位置。
baseline 该元素将放置在容器的基线位置。
initial 这会将属性设置为其默认值。
inherit 这将从父元素继承属性。

CSS align self 属性的示例

以下示例说明具有不同值的 align-self 属性。

Flex 项的默认位置

为了让 flex 项目采用 align-items 属性给出的位置而没有自己的位置,我们使用 auto 值。在以下示例中,第三个 flex 项设置为 flex 容器内的初始位置。


<!DOCTYPE html>
<html>

<head>
	 	 <style>
	 	 	 	 .flex_container {
	 	 	 	 	 	 display: flex;
	 	 	 	 	 	 align-items: center;
	 	 	 	 	 	 border:1px solid black;
	 	 	 	 	 	 height: 300px;
	 	 	 	 	 	 gap:10px;
	 	 	 	 }

	 	 	 	 .flex_container div {
	 	 	 	 	 	 background-color: grey;
	 	 	 	 	 	 border:2px solid black;
	 	 	 	 	 	
	 	 	 	 }

	 	 	 	 .flex-item {
	 	 	 	 	 	 align-self: auto;
	 	 	 	 }
	 	 </style>
</head>

<body>
	 	 <h2>CSS align-self property</h2>
	 	 <div class="flex_container">
	 	 	 	 <div>Flex item 1</div>
	 	 	 	 <div>Flex item 2</div>
	 	 	 	 <div class="flex-item">Flex item 3</div>
	 	 	 	 <div>Flex item 4</div>
	 	 	 	 <div>Flex item 5</div>
	 	 </div>
</body>

</html>

拉伸 flex 项

为了让 flex 项的位置更适合容器,我们使用 stretch 值。在以下示例中,各个 flex 项被垂直拉伸以填充 flex 容器的可用空间。


<!DOCTYPE html>
<html>

<head>
	 	 <style>
	 	 	 	 .flex-container {
	 	 	 	 	 	 display: flex;
	 	 	 	 	 	 border:1px solid black;
	 	 	 	 	 	 height: 350px;
	 	 	 	 	 	 flex-wrap: wrap;
	 	 	 	 	 	 align-items: center;
	 	 	 	 	 	 gap:10px;
	 	 	 	 }

	 	 	 	 .flex-container div {
	 	 	 	 	 	 background-color: grey;
	 	 	 	 	 	 border:2px solid black;
	 	 	 	 	 		
	 	 	 	 }
	 	 	 	 .flex-item{
	 	 	 	 	 	 align-self:stretch;
	 	 	 	 }
	 	 </style>
</head>

<body>
	 	 <h2>CSS align-self property</h2>
	 	 <div class="flex-container">
	 	 	 	 <div>Flex item 1</div>
	 	 	 	 <div>Flex item 2</div>
	 	 	 	 <div class="flex-item">Flex item 3</div>
	 	 	 	 <div>Flex item 4</div>
	 	 </div>
</body>

</html>

Flex 项位于中心

为了让 flex 项处于中心位置,而不是其他 flex 项的位置,我们使用 center 值。在以下示例中,第三个 flex 项设置为 flex 容器的交叉轴中心。


<!DOCTYPE html>
<html>

<head>
	 	 <style>
	 	 	 	 .flex_container {
	 	 	 	 	 	 display: flex;
	 	 	 	 	 	 border:1px solid black;
	 	 	 	 	 	 height: 300px;
	 	 	 	 	 	 gap:10px;
	 	 	 	 }

	 	 	 	 .flex_container div {
	 	 	 	 	 	 background-color: grey;
	 	 	 	 	 	 border:2px solid black;
	 	 	 	 	 	 height: 50px;
	 	 	 	 }

	 	 	 	 .flex-item {
	 	 	 	 	 	 align-self: center;
	 	 	 	 }
	 	 </style>
</head>

<body>
	 	 <h2>CSS align-self property</h2>
	 	 <div class="flex_container">
	 	 	 	 <div>Flex item 1</div>
	 	 	 	 <div>Flex item 2</div>
	 	 	 	 <div class="flex-item">Flex item 3</div>
	 	 	 	 <div>Flex item 4</div>
	 	 	 	 <div>Flex item 5</div>
	 	 </div>
</body>

</html>

开始时的 Flex 项

为了让 flex 项相对于其他 flex 项处于起始位置,我们使用 flex-start 值。在以下示例中,第三个 flex 项设置为 flex 容器的交叉轴的起点。


<!DOCTYPE html>
<html>

<head>
	 	 <style>
	 	 	 	 .flex_container {
	 	 	 	 	 	 display: flex;
	 	 	 	 	 	 align-items: center;
	 	 	 	 	 	 border:1px solid black;
	 	 	 	 	 	 height: 300px;
	 	 	 	 	 	 gap:10px;
	 	 	 	 }

	 	 	 	 .flex_container div {
	 	 	 	 	 	 background-color: grey;
	 	 	 	 	 	 border:2px solid black;
	 	 	 	 	 	 height: 50px;
	 	 	 	 }

	 	 	 	 .flex-item {
	 	 	 	 	 	 align-self: flex-start;
	 	 	 	 }
	 	 </style>
</head>

<body>
	 	 <h2>CSS align-self property</h2>
	 	 <div class="flex_container">
	 	 	 	 <div>Flex item 1</div>
	 	 	 	 <div>Flex item 2</div>
	 	 	 	 <div class="flex-item">Flex item 3</div>
	 	 	 	 <div>Flex item 4</div>
	 	 	 	 <div>Flex item 5</div>
	 	 </div>
</body>

</html>

End 的 Flex 项

为了让 flex 项目相对于其他 flex 项目处于结束位置,我们使用 flex-end 值。在以下示例中,第三个 flex 项设置为 flex 容器的交叉轴的末端。


<!DOCTYPE html>
<html>

<head>
	 	 <style>
	 	 	 	 .flex_container {
	 	 	 	 	 	 display: flex;
	 	 	 	 	 	 align-items: center;
	 	 	 	 	 	 border:1px solid black;
	 	 	 	 	 	 height: 300px;
	 	 	 	 	 	 gap:10px;
	 	 	 	 }

	 	 	 	 .flex_container div {
	 	 	 	 	 	 background-color: grey;
	 	 	 	 	 	 border:2px solid black;
	 	 	 	 	 	 height: 50px;
	 	 	 	 }

	 	 	 	 .flex-item {
	 	 	 	 	 	 align-self: flex-end;
	 	 	 	 }
	 	 </style>
</head>

<body>
	 	 <h2>CSS align-self property</h2>
	 	 <div class="flex_container">
	 	 	 	 <div>Flex item 1</div>
	 	 	 	 <div>Flex item 2</div>
	 	 	 	 <div class="flex-item">Flex item 3</div>
	 	 	 	 <div>Flex item 4</div>
	 	 	 	 <div>Flex item 5</div>
	 	 </div>
</body>

</html>

基准处的 Flex 项

为了让 flex 项位于容器的基线处,我们使用 baseline 值。在以下示例中,第三个 flex 项沿容器的基线设置。


<!DOCTYPE html>
<html>

<head>
	 	 <style>
	 	 	 	 .flex_container {
	 	 	 	 	 	 display: flex;
	 	 	 	 	 	 align-items: center;
	 	 	 	 	 	 border:1px solid black;
	 	 	 	 	 	 height: 300px;
	 	 	 	 	 	 gap:10px;
	 	 	 	 }

	 	 	 	 .flex_container div {
	 	 	 	 	 	 background-color: grey;
	 	 	 	 	 	 border:2px solid black;
	 	 	 	 	 	 height: 50px;
	 	 	 	 }

	 	 	 	 .flex-item {
	 	 	 	 	 	 align-self: baseline;
	 	 	 	 }
	 	 </style>
</head>

<body>
	 	 <h2>CSS align-self property</h2>
	 	 <div class="flex_container">
	 	 	 	 <div>Flex item 1</div>
	 	 	 	 <div>Flex item 2</div>
	 	 	 	 <div class="flex-item">Flex item 3</div>
	 	 	 	 <div>Flex item 4</div>
	 	 	 	 <div>Flex item 5</div>
	 	 </div>
</body>

</html>

支持的浏览器

属性 Chrome Edge Firefox Safari Opera
align-self 57.0 16.0 52.0 10.1 44.0