CSS 属性

CSS place-self 是一种速记属性,可同时在块方向和内联方向上对齐各个项目,类似于 align-selfjustify-self 在 Grid 或 Flexbox 等布局系统中。如果未设置第二个值,则使用第一个值。

此属性是以下 CSS 属性的简写:

属性值

  • auto: 对齐基于父级的 align-self 值的项目。

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

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

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

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

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

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

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

  • self-end: 项目与与横轴上项目的结束侧相对应的对齐容器。

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

  • flex-end− 将 Flex 项目的跨端边距边缘与线的跨端边缘对齐。

  • center− 弹性项目框的边距在横轴上的线内居中。当元素的横向尺寸大于容器时,内容会在两个方向上均匀溢出。

  • baseline, first baseline, last baseline −

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

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

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

  • stretch: 当项目沿横轴的组合大小小于容器的大小,并且项目大小为自动时,其大小相等地增加,保持 max-height / max 的值-width。

适用范围

块级框、绝对定位框和网格项。

语法

关键字值

place-self: auto center;
place-self: normal start; 

位置对齐

place-self: center normal;
place-self: start auto;
place-self: end normal;
place-self: self-start auto;
place-self: self-end normal;
place-self: flex-start auto;
place-self: flex-end normal; 

基线对齐

place-self: baseline normal;
place-self: first baseline auto;
place-self: last baseline normal;
place-self: stretch auto; 

CSS place-self: normal start

以下示例演示了 place-self:normal start 属性将项目 2 与其网格单元格的开头对齐 -

<html>
<head>
<style>
   .container {
      background-color: red;
      display: grid;
      grid-template-columns: 1fr 1fr;
      grid-auto-rows: 100px;
      grid-gap: 10px;
      margin: 20px;
      width: 300px;
   }
   .container > div {
      background-color: greenyellow;
      border: 3px solid blue;
      text-align: center;
      margin: 5px;
      width: 60px;
      height: 50px;
   }
   .item2 {
      place-self: normal start;
   }
</style>
</head>
<body>
   <div class="container">
      <div>Item 1</div>
      <div class="item2">Item 2</div>
      <div>Item 3</div>
      <div>Item 4</div>
   </div>
</body>
</html> 

CSS place-self: auto center

以下示例演示了 place-self: auto center 属性将项目 2 与其网格单元的中心对齐 -

<html>
<head>
<style>
   .container {
      background-color: red;
      display: grid;
      grid-template-columns: 1fr 1fr;
      grid-auto-rows: 100px;
      grid-gap: 10px;
      margin: 20px;
      width: 300px;
   }
   .container > div {
      background-color: greenyellow;
      border: 3px solid blue;
      text-align: center;
      margin: 5px;
      width: 60px;
      height: 50px;
   }
   .item2 {
      place-self: auto center;
   }
</style>
</head>
<body>
   <div class="container">
      <div>Item 1</div>
      <div class="item2">Item 2</div>
      <div>Item 3</div>
      <div>Item 4</div>
   </div>
</body>
</html> 

CSS place-self: center normal

以下示例演示了 place- self:center normal 属性将项目2在其网格单元的水平和垂直中心对齐 -

<html>
<head>
<style>
   .container {
      background-color: red;
      display: grid;
      grid-template-columns: 1fr 1fr;
      grid-auto-rows: 100px;
      grid-gap: 10px;
      margin: 20px;
      width: 300px;
   }
   .container > div {
      background-color: greenyellow;
      border: 3px solid blue;
      text-align: center;
      margin: 5px;
      width: 60px;
      height: 50px;
   }
   .item2 {
      place-self: center normal;
   }
</style>
</head>
<body>
   <div class="container">
      <div>Item 1</div>
      <div class="item2">Item 2</div>
      <div>Item 3</div>
      <div>Item 4</div>
   </div>
</body>
</html> 

CSS place-self: end normal

以下示例演示了place-self :end normal; 属性将其网格单元右边缘的项目 2 垂直和水平对齐到其网格单元的上边缘 -

<html>
<head>
<style>
   .container {
      background-color: red;
      display: grid;
      grid-template-columns: 1fr 1fr;
      grid-auto-rows: 100px;
      grid-gap: 10px;
      margin: 20px;
      width: 300px;
   }
   .container > div {
      background-color: greenyellow;
      border: 3px solid blue;
      text-align: center;
      margin: 5px;
      width: 60px;
      height: 50px;
   }
   .item2 {
      place-self: end normal;
   }
</style>
</head>
<body>
   <div class="container">
      <div>Item 1</div>
      <div class="item2">Item 2</div>
      <div>Item 3</div>
      <div>Item 4</div>
   </div>
</body>
</html> 

CSS place-self: start auto 

以下示例演示了 place-self: start auto 属性将项目 2 与其网格单元格的开头对齐 -

<html>
<head>
<style>
   .container {
      background-color: red;
      display: grid;
      grid-template-columns: 1fr 1fr;
      grid-auto-rows: 100px;
      grid-gap: 10px;
      margin: 20px;
      width: 300px;
   }
   .container > div {
      background-color: greenyellow;
      border: 3px solid blue;
      text-align: center;
      margin: 5px;
      width: 60px;
      height: 50px;
   }
   .item2 {
      place-self: start auto;
   }
</style>
</head>
<body>
   <div class="container">
      <div>Item 1</div>
      <div class="item2">Item 2</div>
      <div>Item 3</div>
      <div>Item 4</div>
   </div>
</body>
</html> 

CSS place-self: self-start auto

以下示例演示了 place-self: self-start auto 属性将项目 2 垂直定位在行的开头,并在水平方向自动定位 -

<html>
<head>
<style>
   .container {
      background-color: red;
      display: grid;
      grid-template-columns: 1fr 1fr;
      grid-auto-rows: 100px;
      grid-gap: 10px;
      margin: 20px;
      width: 300px;
   }
   .container > div {
      background-color: greenyellow;
      border: 3px solid blue;
      text-align: center;
      margin: 5px;
      width: 60px;
      height: 50px;
   }
   .item2 {
      place-self: self-start auto;
   }
</style>
</head>
<body>
   <div class="container">
      <div>Item 1</div>
      <div class="item2">Item 2</div>
      <div>Item 3</div>
      <div>Item 4</div>
   </div>
</body>
</html> 

CSS place-self: self-end normal

以下示例演示了 place-self: self-end normal 属性将项目 2 垂直对齐到底部,水平对齐到其网格单元格的开头 -

<html>
<head>
<style>
   .container {
      background-color: red;
      display: grid;
      grid-template-columns: 1fr 1fr;
      grid-auto-rows: 100px;
      grid-gap: 10px;
      margin: 20px;
      width: 300px;
   }
   .container > div {
      background-color: greenyellow;
      border: 3px solid blue;
      text-align: center;
      margin: 5px;
      width: 60px;
      height: 50px;
   }
   .item2 {
      place-self: self-end normal;
   }
</style>
</head>
<body>
   <div class="container">
      <div>Item 1</div>
      <div class="item2">Item 2</div>
      <div>Item 3</div>
      <div>Item 4</div>
   </div>
</body>
</html> 

CSS place-self: flex-start auto 

以下示例演示了 place-self:flex-start auto 属性将项目 2 垂直对齐到左边缘,水平对齐到其网格单元的顶部 -

<html>
<head>
<style>
   .container {
      background-color: red;
      display: grid;
      grid-template-columns: 1fr 1fr;
      grid-auto-rows: 100px;
      grid-gap: 10px;
      margin: 20px;
      width: 300px;
   }
   .container > div {
      background-color: greenyellow;
      border: 3px solid blue;
      text-align: center;
      margin: 5px;
      width: 60px;
      height: 50px;
   }
   .item2 {
      place-self: flex-start auto;
   }
</style>
</head>
<body>
   <div class="container">
      <div>Item 1</div>
      <div class="item2">Item 2</div>
      <div>Item 3</div>
      <div>Item 4</div>
   </div>
</body>
</html> 

CSS place-self: flex-end normal

以下示例演示了 place-self: flex-end normal; 属性将项目 2 与其网格单元的右边缘对齐 -

<html>
<head>
<style>
   .container {
      background-color: red;
      display: grid;
      grid-template-columns: 1fr 1fr;
      grid-auto-rows: 100px;
      grid-gap: 10px;
      margin: 20px;
      width: 300px;
   }
   .container > div {
      background-color: greenyellow;
      border: 3px solid blue;
      text-align: center;
      margin: 5px;
      width: 60px;
      height: 50px;
   }
   .item2 {
      place-self: flex-end normal;
   }
</style>
</head>
<body>
   <div class="container">
      <div>Item 1</div>
      <div class="item2">Item 2</div>
      <div>Item 3</div>
      <div>Item 4</div>
   </div>
</body>
</html> 

CSS place-self: baseline normal

以下示例演示了 place-self:baseline normal 属性将项目 2 与其网格单元的基线对齐 -

<html>
<head>
<style>
   .container {
      background-color: red;
      display: grid;
      grid-template-columns: 1fr 1fr;
      grid-auto-rows: 100px;
      grid-gap: 10px;
      margin: 20px;
      width: 300px;
   }
   .container > div {
      background-color: greenyellow;
      border: 3px solid blue;
      text-align: center;
      margin: 5px;
      width: 60px;
      height: 50px;
   }
   .item2 {
      place-self: baseline normal;
   }
</style>
</head>
<body>
   <div class="container">
      <div>Item 1</div>
      <div class="item2">Item 2</div>
      <div>Item 3</div>
      <div>Item 4</div>
   </div>
</body>
</html> 

CSS place-self: last baseline normal

以下示例演示了 place-self:last baseline normal 属性将项目 2 与其网格单元最后一行的基线对齐 -

<html>
<head>
<style>
   .container {
      background-color: red;
      display: grid;
      grid-template-columns: 1fr 1fr;
      grid-auto-rows: 100px;
      grid-gap: 10px;
      margin: 20px;
      width: 300px;
   }
   .container > div {
      background-color: greenyellow;
      border: 3px solid blue;
      text-align: center;
      margin: 5px;
      width: 60px;
      height: 50px;
   }
   .item2 {
      place-self: last baseline normal;
   }
</style>
</head>
<body>
   <div class="container">
      <div>Item 1</div>
      <div class="item2">Item 2</div>
      <div>Item 3</div>
      <div>Item 4</div>
   </div>
</body>
</html> 

CSS place-self: stretch auto 

以下示例演示了 place-self:stretch auto 属性水平拉伸项目 2 以填充其网格单元中的可用空间 -

<html>
<head>
<style>
   .container {
      background-color: red;
      display: grid;
      grid-template-columns: 1fr 1fr;
      grid-auto-rows: 100px;
      grid-gap: 10px;
      margin: 20px;
      width: 300px;
   }
   .container > div {
      background-color: greenyellow;
      border: 3px solid blue;
      text-align: center;
      margin: 5px;
      width: 60px;
      min-height: 50px;
   }
   .item2 {
      place-self: stretch auto;
   }
</style>
</head>
<body>
   <div class="container">
      <div>Item 1</div>
      <div class="item2">Item 2</div>
      <div>Item 3</div>
      <div>Item 4</div>
   </div>
</body>
</html>