css 如何将网格列与基线对齐,同时保持其拉伸状态?

7dl7o3gd  于 2023-04-13  发布在  其他
关注(0)|答案(3)|浏览(108)

我有一个包含两列的网格。第二列的字体较大:

.container {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 0.5rem;
}

.text1 {
  color: #fff;
  background-color: #000;
}

.text2 {
  font-size: 3.75rem;
}
<div class="container">
  <div class="text1">text1</div>
  <div class="text2">text2</div>
</div>

我想将文本与基线对齐,所以我将align-items: baseline;添加到.container,发生了以下情况:

文本正确对齐,但黑色背景没有占据整个网格块。如何保持text1容器拉伸,同时将其内容对齐到基线?
我试过这些,但没有一个奏效:
1.将height: 100%添加到.text1
1.将align-self: stretchalign-content: baseline添加到.text1
1.用于背景的 Package 器div和用于内容的span以及用于span的设置align-self: baseline

yk9xbfzb

yk9xbfzb1#

您可以尝试通过flex对齐文本项:

.container {
    display: grid;
    grid-template-columns: max-content 1fr;
    gap: 0.5rem;
    align-items: baseline;
}

.text1 {
    color: #fff;
    background-color: #000;
    height: 100%;
    display: flex;
    align-items: last baseline;
}

.text2 {
    font-size: 3.75rem;
    align-self: center;
}
<div class="container">
    <div class="text1">text1</div>
    <div class="text2">text2</div>
</div>
l2osamch

l2osamch2#

如果不想使用表,this answer可能会为您指出正确的方向。
如果您不介意使用display: table,可以使用vertical-align属性,如下所示。

.container {
  display: table;
  grid-template-columns: max-content 1fr;
  gap: 0.5rem;
}

.text1 {
  display: table-cell;
  color: #fff;
  background-color: #000;
  vertical-align: bottom;
}

.text2 {
  font-size: 3.75rem;
}
<div class="container">
  <div class="text1">text1</div>
  <div class="text2">text2</div>
</div>
2izufjch

2izufjch3#

我使用align-items:self-enddisplay:flexline-height属性将文本对齐到同一级别。

.container {
 display: grid;
 grid-template-columns: repeat(auto-fill, minmax( max-content, 0px));
 grid-gap: 1rem;
}
.text1 {
 color: #fff;
 background-color: #000;
 align-items:self-end;
 display:flex;
 height:100px;
 padding:25px 25px 0px 25px;
 line-height:0.9;

}
.text2 {
 color: #000;
 display: flex;
 align-items:self-end;
 font-size: 3.25rem;
 line-height: 0.7;
}
<div class="container">
 <div class="text1">text1</div>
 <div class="text2">text2</div> 
</div>

相关问题