如何使所有网格列的高度等于最短列的高度 [复制]

How can I make all my grid column have their height be equal to the height of shortest column [duplicate]

提问人:Oscar R 提问时间:3/10/2023 最后编辑:Michael BenjaminOscar R 更新时间:3/10/2023 访问量:93

问:

正如您在我的代码片段中看到的,两列的高度都设置为最高列的高度。但是,我希望我的列的高度设置为最短的列,而第二列将具有溢出滚动。

我不知道其中任何一列的高度,因为它们的内容是动态加载的。

如果 flex 可以达到我想要的结果,我也不需要使用网格。

.grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}
.item1 {
  background-color: #00ffff;
}
.item2 {
  background-color: #ff00ff;
  overflow-y: auto;
}
<div class='grid'>
  <div class='item1'>
    <div class='item1_content'>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
    </div>
  </div>
  <div class='item2'>
    <div class='item2_content'>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
    </div>
  </div>
</div>

css 弹性框 css-grid

评论

0赞 Michael Benjamin 3/10/2023
不是CSS自己可以做到的。什么会设置高度限制,从而触发较高箱子的溢出?什么都没有。需要一个脚本。
0赞 Temani Afif 3/10/2023
你知道哪一个会最短吗?如果是,则有一个CSS解决方案
0赞 Oscar R 3/11/2023
@TemaniAfif 是的,就我而言,正确的总是最短的
0赞 Temani Afif 3/11/2023
然后查看副本

答:

2赞 Wimanicesir 3/10/2023 #1

为此,您可以使用 javascript。 我认为对于这个:),没有唯一的CSS解决方案

let referenceBox = document.getElementsByClassName("item1_content")[0];
let adjustedBox = document.getElementsByClassName("item2_content")[0];

adjustedBox.style.height = referenceBox.offsetHeight + 'px';
.grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
}
.item1 {
  background-color: #00ffff;
}
.item2 {
  background-color: #ff00ff;
  overflow-y: auto;
}
<div class='grid'>
  <div class='item1'>
    <div class='item1_content'>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
    </div>
  </div>
  <div class='item2'>
    <div class='item2_content'>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
      <p>Content</p>
    </div>
  </div>
</div>