使用CSS网格时,是否可以让孩子超越父母的网格放置?

发布于 2025-01-28 02:37:35 字数 2007 浏览 1 评论 0原文

我有一个简单的CSS网格,有5列和两个行。第一行包含5个元素,但我希望第二行包含所有5列的第五元素的孩子,这可能吗?

我希望红色元素(元素5的子女)是所有其他元素以下行的宽度的100%。

.container {
  display: grid;
  grid-template-columns: [line1] min-content [line2] min-content [line3] min-content [line4] max-content [line5] max-content [end];
  grid-template-rows: [row1-start] 10% [row1-end row2-start] auto [row2-end];
  column-gap: 1em;
  row-gap: 2em;
}
.element1 {
  max-height: 2em;
  grid-column-start: 1;
  grid-column-end: 1;
  grid-row-start: 1;
  grid-row-end: 1;
  background-color: pink;
}
.element2 {
  max-height: 2em;
  grid-column-start: 2;
  grid-column-end: 2;
  grid-row-start: 1;
  grid-row-end: 1;
  background-color: blue;
}
.element3 {
  max-height: 2em;
  grid-column-start: 3;
  grid-column-end: 3;
  grid-row-start: 1;
  grid-row-end: 1;
  background-color: orange;
}
.element4 {
  max-height: 2em;
  grid-column-start: 4;
  grid-column-end: 4;
  grid-row-start: 1;
  grid-row-end: 1;
  background: yellow;
}
.element5 {
  grid-column-start: 5;
  grid-column-end: 5;
  grid-row-start: 1;
  grid-row-end: 1;
  justify-self: end;
  background-color: purple;
}

.element-sub5 {
  grid-column: 1 / 5;
  grid-row: 2;
    border: 1px solid red;
  background-color: red;
    padding: 0 1em;
    margin-top: 2.5em;
  width: 100%;
  height: 10em;
  float: left;
}
<div class="container">
  <div class="element1">
  element1
  </div>
  <div class="element2"> 
  element2
  </div>
  <div class="element3">
  element3
  </div>
  <div class="element4"> 
  element4
  </div>
  <div class="element5">
  element5
    <span class="element-sub5">
      REALLY BIG BOX OF TEXT
    </span> 
  </div>
</div>

示例布局

I have a simple CSS grid with 5 columns and two rows. The first row contains 5 elements but I want the second row to contain the 5th element's child for all 5 columns, is this possible?

I want the red element (the child of element 5) to be 100% the width in the row below all the other elements.

.container {
  display: grid;
  grid-template-columns: [line1] min-content [line2] min-content [line3] min-content [line4] max-content [line5] max-content [end];
  grid-template-rows: [row1-start] 10% [row1-end row2-start] auto [row2-end];
  column-gap: 1em;
  row-gap: 2em;
}
.element1 {
  max-height: 2em;
  grid-column-start: 1;
  grid-column-end: 1;
  grid-row-start: 1;
  grid-row-end: 1;
  background-color: pink;
}
.element2 {
  max-height: 2em;
  grid-column-start: 2;
  grid-column-end: 2;
  grid-row-start: 1;
  grid-row-end: 1;
  background-color: blue;
}
.element3 {
  max-height: 2em;
  grid-column-start: 3;
  grid-column-end: 3;
  grid-row-start: 1;
  grid-row-end: 1;
  background-color: orange;
}
.element4 {
  max-height: 2em;
  grid-column-start: 4;
  grid-column-end: 4;
  grid-row-start: 1;
  grid-row-end: 1;
  background: yellow;
}
.element5 {
  grid-column-start: 5;
  grid-column-end: 5;
  grid-row-start: 1;
  grid-row-end: 1;
  justify-self: end;
  background-color: purple;
}

.element-sub5 {
  grid-column: 1 / 5;
  grid-row: 2;
    border: 1px solid red;
  background-color: red;
    padding: 0 1em;
    margin-top: 2.5em;
  width: 100%;
  height: 10em;
  float: left;
}
<div class="container">
  <div class="element1">
  element1
  </div>
  <div class="element2"> 
  element2
  </div>
  <div class="element3">
  element3
  </div>
  <div class="element4"> 
  element4
  </div>
  <div class="element5">
  element5
    <span class="element-sub5">
      REALLY BIG BOX OF TEXT
    </span> 
  </div>
</div>

Example layout

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

公布 2025-02-04 02:37:35

可以设置这样的网格,但前提是您的第五项元素不在其中……

CSS

.parent { 
display: grid; 
grid-template-columns: repeat(5, 1fr); 
grid-template-rows: repeat(2, 1fr); 
grid-column-gap: 0px;
grid-row-gap: 0px; 
}
.div1 { grid-area: 1 / 1 / 2 / 2; } 
.div2 { grid-area: 1 / 2 / 2 / 3; } 
.div3 { grid-area: 1 / 3 / 2 / 4; } 
.div4 { grid-area: 1 / 4 / 2 / 5; } 
.div5 { grid-area: 1 / 5 / 2 / 6; } 
.div6 { grid-area: 2 / 1 / 3 / 6; } 

HTML

<div class="parent"> 
<div class="div1"> </div> 
<div class="div2"> </div> 
<div class="div3"> </div> 
<div class="div4"> </div> 
<div class="div5"> </div> 
<div class="div6"> </div> 
</div>

It’s possible to set up a grid like this but only if your 5th items element isn’t inside it…

CSS

.parent { 
display: grid; 
grid-template-columns: repeat(5, 1fr); 
grid-template-rows: repeat(2, 1fr); 
grid-column-gap: 0px;
grid-row-gap: 0px; 
}
.div1 { grid-area: 1 / 1 / 2 / 2; } 
.div2 { grid-area: 1 / 2 / 2 / 3; } 
.div3 { grid-area: 1 / 3 / 2 / 4; } 
.div4 { grid-area: 1 / 4 / 2 / 5; } 
.div5 { grid-area: 1 / 5 / 2 / 6; } 
.div6 { grid-area: 2 / 1 / 3 / 6; } 

HTML

<div class="parent"> 
<div class="div1"> </div> 
<div class="div2"> </div> 
<div class="div3"> </div> 
<div class="div4"> </div> 
<div class="div5"> </div> 
<div class="div6"> </div> 
</div>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文