我得到的布局如下:

html - 用网格布局:如何将box1放在第1行的第2列中,将box2放在第2行的第2列中?-LMLPHP

我期望的是:
box1放在row 1 column 2中,将box2放在row2 column 2中。

为什么不能将box1box2中的内容放入row 1 column 2的网格和row 2 column 2的网格中?

如何修复我的CSS?



html,
body {
  height: 1200px;
  width: 1000px;
}

.container {
  display: grid;
  grid-gap: 1.5em;
  margin: 1.5em auto;
  padding: 0 1.5em;
  border: 1px solid green;
  grid-template-columns: 2fr 1fr;
  grid-template-rows: 1fr 1fr;
}

.sidebar {
  grid-row: 1/3;
  grid-column: 2/3;
}

.box1 {
  grid-row: 1/2;
  grid-column: 2/3;
}

.box2 {
  grid-row: 2/3;
  grid-column: 2/3;
}

<div class="container">
  <div class="prose1">
    <h1>Introduction</h1>
    <p>100 characters created by lorem with emmt-vim.
    </p>
  </div>
  <div class="sidebar">
    <div class="box1">
      <h2 class="box-header">Actions</h2>
      <ul class="box-menu">
        <li><a href="">Do a thing</a></li>
        <li><a href="">Register your bad self</a></li>
        <li><a href="">Hold the phone</a></li>
      </ul>
    </div>
    <div class="box2">
      <h2 class="box-header">Related Stuff</h2>
      <ul class="box-menu">
        <li><a href="">Just a link</a></li>
        <li><a href="">Another link</a></li>
      </ul>
    </div>
  </div>
  <div class="prose2">
    <h2>Additional Information</h2>
    xxxx
  </div>
</div>

最佳答案

容器是布局中的网格,您可以放置​​直接子项,并且box1box2嵌套在侧边栏中。因此,通常可以从容器中放置porse1sidebarporse2,但是可以使用contents显示值将侧边栏子项视为容器的直接子项。

因此,一种解决方案是使用contents显示值:

.sidebar {
    display: contents;
}


但是要注意browser support

另一个解决方案是也将边栏变成网格并根据需要布局子项box1box2,例如:

html,
body {
  height: 1200px;
  width: 1000px;
}

.container {
  display: grid;
  grid-gap: 1.5em;
  margin: 1.5em auto;
  padding: 0 1.5em;
  border: 1px solid green;
  grid-template-columns: 2fr 1fr;
  grid-template-rows: 1fr 1fr;
}

.sidebar {
    display: grid;
    grid-gap: 1.5em;
    grid-row: 1/-1;
    grid-column: 2;
}

.box1 {
  grid-row: 1;
}

.box2 {
  grid-row: 2;
}

10-07 21:33