CSS 属性

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

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

align-self 属性不适用于块级框或表格单元格。如果flexbox项目的横轴边距设置为自动,则忽略align-self值。

属性值

align-self属性可以具有以下值:

  • auto:根据父项的align-items值对齐项目。

  • normal:基于布局模式,正常关键字更改的效果:

    • 当布局是绝对时,其行为类似于在替换的绝对定位框上开始,以及在所有其他绝对定位框中拉伸定位。

    • 行为类似于绝对定位布局的静态位置中的拉伸。

    • 行为类似于flexbox项目的拉伸。

    • 行为类似于网格项的拉伸,但具有长宽比或固有尺寸的框除外,其行为类似于开始。

    • 不适用于块级框和表格单元格。

  • flex-start:对齐Flex 项目的交叉起始边距边缘与行的交叉起始边距边缘。

  • flex-end:将 Flex 项目的交叉结束边距边缘与线的交叉端边缘。

  • center:flexbox项目框的边距在交叉轴上的线内居中。当元素的横向尺寸大于容器时,内容在两个方向上均等溢出。

  • self-start:项目与对齐容器的边缘对齐对应于横轴上项目的起始侧。

  • self-end:项目与对齐容器的边缘对齐,该对齐容器对应于项目的结束侧横轴上的项目。

  • baseline, first baseline, last baseline:

    • 第一个基线和最后一个基线是基线的同义词。 First 和 Last 指的是 Flex 项目中的行框。

    • 这些值指定内容对齐中的第一个或最后一个基线对齐。

    • start 是第一个基线的后备对齐方式,end 是最后一个基线的后备对齐方式。

  • stretch:当项目沿横轴的组合尺寸小于容器的尺寸,且项目尺寸为auto时,其尺寸等量增加,保持max-height / max的值-width。

  • safe:当项目溢出容器时,根据起始值设置对齐方式。

  • unsafe:无论项目和对齐容器的大小如何,都会遵循指定的对齐值。

适用

Flex项目、网格项目和绝对定位框

语法

关键字值

align-self: auto;
align-self: normal; 

位置对齐

align-self: center; 
align-self: start; 
align-self: end; 
align-self: self-start; 
align-self: self-end; 
align-self: flex-start; 
align-self: flex-end; 

基线对齐

align-self: baseline;
align-self: first baseline;
align-self: last baseline;
align-self: stretch; 

CSS align-self: auto

以下示例演示了align-self:auto属性将第三个flex项目放置在flex容器内的初始位置 -

<html>
<head>
<style>
   .flex_container {
      display: flex;
      align-items: center;
      background-color: green;
      height: 300px;
   }
   .flex_container div {
      background-color: yellow;
      padding: 10px;
      margin: 5px;
      height: 50px;
   }
   .flex-item {
      align-self: auto;
   }
</style>
</head>
<body>
   <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> 

CSS align-self: start 

以下示例演示了align-self:start属性将第三个flex项目放置在flex容器横轴的开始位置 -

<html>
<head>
<style>
   .flex_container {
      display: flex;
      align-items: center;
      background-color: green;
      height: 300px;
   }
   .flex_container div {
      background-color: yellow;
      padding: 10px;
      margin: 5px;
      height: 50px;
   }
   .flex-item {
      align-self: start;
   }
</style>
</head>
<body>
   <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> 

CSS align-self: end 

以下示例演示了align-self: end属性将第三个Flex项目放置在Flex容器横轴的末端 -

<html>
<head>
<style>
   .flex_container {
      display: flex;
      align-items: center;
      background-color: green;
      height: 300px;
   }
   .flex_container div {
      background-color: yellow;
      padding: 10px;
      margin: 5px;
      height: 50px;
   }
   .flex-item {
      align-self: end;
   }
</style>
</head>
<body>
   <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> 

CSS align-self: center 

以下示例演示了align-self: end属性将第三个Flex项目放置在Flex容器横轴的中心 -

<html>
<head>
<style>
   .flex_container {
      display: flex;
      background-color: green;
      height: 300px;
   }
   .flex_container div {
      background-color: yellow;
      padding: 10px;
      margin: 5px;
      height: 50px;
   }
   .flex-item {
      align-self: center;
   }
</style>
</head>
<body>
   <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> 

CSS align-self: flex-start 

以下示例演示了align-self: flex-start 属性将第三个 Flex 项目放置在 Flex 容器横轴的开始位置 -

<html>
<head>
<style>
   .flex_container {
      display: flex;
      align-items: center;
      background-color: green;
      height: 300px;
   }
   .flex_container div {
      background-color: yellow;
      padding: 10px;
      margin: 5px;
      height: 50px;
   }
   .flex-item {
      align-self: flex-start;
   }
</style>
</head>
<body>
   <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> 

CSS align-self: flex-end

以下示例演示了align-self:flex-end属性将第三个Flex项目放置在Flex容器横轴的末端 -

<html>
<head>
<style>
   .flex_container {
      display: flex;
      align-items: center;
      background-color: green;
      height: 300px;
   }
   .flex_container div {
      background-color: yellow;
      padding: 10px;
      margin: 5px;
      height: 50px;
   }
   .flex-item {
      align-self: flex-end;
   }
</style>
</head>
<body>
   <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> 

CSS align-self: self-start

以下示例演示了align-self:self-start属性在Flex容器的开头对齐第三个Flex项目 -

<html>
<head>
<style>
   .flex_container {
      display: flex;
      align-items: center;
      background-color: green;
      height: 300px;
   }
   .flex_container div {
      background-color: yellow;
      padding: 10px;
      margin: 5px;
      height: 50px;
   }
   .flex-item {
      align-self: self-start;
   }
</style>
</head>
<body>
   <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> 

CSS align-self: self-end 

以下示例演示了align-self:self-end属性将第三个Flex项目对齐在Flex容器的末尾 -

<html>
<head>
<style>
   .flex_container {
      display: flex;
      align-items: center;
      background-color: green;
      height: 300px;
   }
   .flex_container div {
      background-color: yellow;
      padding: 10px;
      margin: 5px;
      height: 50px;
   }
   .flex-item {
      align-self: self-end;
   }
</style>
</head>
<body>
   <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> 

CSS align-self: baseline

以下示例演示了align-self:baseline属性沿基线对齐第三个Flex项目 -

<html>
<head>
<style>
   .flex_container {
      display: flex;
      align-items: center;
      background-color: green;
      height: 300px;
   }
   .flex_container div {
      background-color: yellow;
      padding: 10px;
      margin: 5px;
      height: 50px;
   }
   .flex-item {
      align-self: baseline;
   }
</style>
</head>
<body>
   <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> 

CSS align-self: stretch

以下示例演示了align-self:stretch属性垂直拉伸Flex项目以填充Flex容器的可用空间 -

<html>
<head>
<style>
   .flex-container {
      display: flex;
      background-color: green;
      height: 350px;
      flex-wrap: wrap;
      align-self: stretch;
   }
   .flex-container div {
      background-color: yellow;
      padding: 10px;
      margin: 5px;
      width: 90px;
   }
</style>
</head>
<body>
   <div class="flex-container">
      <div>Flex item 1</div>
      <div>Flex item 2</div>
      <div>Flex item 3</div>
      <div>Flex item 4</div>
   </div>
</body>
</html>