【问题标题】:CSS grid expand a single column in a rowCSS 网格在一行中展开单列
【发布时间】:2019-09-12 01:23:06
【问题描述】:

我有单行的 CSS 网格。其中一列的内容比其他列多,我想在不展开其他列的情况下垂直展开它。

我尝试过使用grid-template-rows: auto,但这会扩展所有列。我也尝试过使用display: flexflex-grow: 1,但没有成功。

我希望第二列比其他列长,但实际上它是相同的高度

body {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  grid-template-rows: 2rem;
  grid-template-areas: "first second third";
}

.item1 {
  grid-area: first;
  border-style: solid;
}

.item2 {
  grid-area: second;
  border-style: solid;
}

.item3 {
  grid-area: third;
  border-style: solid;
}
<span class="item1">item 1</span>
<span class="item2">item 2<br><br>expanded</span>
<span class="item3">item 3</span>

https://jsfiddle.net/679y4d0z/

【问题讨论】:

  • 这是您尝试做的吗? jsfiddle.net/z8v6nrqw
  • 是的,margin-bottom: autominmax 函数解决了我的问题,谢谢!

标签: html css flexbox css-grid


【解决方案1】:

同一行不能有不同的高度。

您将如何定位行的不同区域?它不起作用。

一行具有统一的高度。

但是,您可以连续调整网格项的高度。

因为网格项的默认高度是stretch(给它们行的完整高度),只需用align-items: start 覆盖该设置(使它们缩小以适应内容)。

body {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  align-items: start;
}

span {
  border-style: solid;
}
<span class="item1">item 1</span>
<span class="item2">item 2<br><br>expanded</span>
<span class="item3">item 3</span>

【讨论】:

  • "同一行不能有不同的高度。" - 同意,但您可以在不同的项目上使用行跨度(通过grid-row-startgrid-row-end)以实现相同的视觉结果。
【解决方案2】:

我建议研究 Bootstrap。我在 CSS 更改方面遇到了困难,但 Bootstrap 真的很有帮助!他们有一个网格系统,可以像您想要的那样轻松更改尺寸

https://getbootstrap.com/docs/4.0/layout/grid/

【讨论】:

  • 感谢您的建议。但是,要求我不能使用第三方库
  • 这实际上并没有回答用户的问题。建议一个框架只会在更广泛的背景下相关。当提问者对 CSS 标准中的某些内容提出非常具体的技术问题时,这将无济于事。
  • 我相信它完美地回答了这个问题。不幸的是,第三方库对用户来说是无法使用的,但如果他们在桌面上,我相信使用 Bootstrap 将是完美的答案
猜你喜欢
  • 1970-01-01
  • 2020-06-30
  • 1970-01-01
  • 2019-07-27
  • 1970-01-01
  • 2011-05-16
  • 2018-11-15
  • 2015-06-11
  • 1970-01-01
相关资源
最近更新 更多