使用网格布局:如何将box1放在第1行第2列,将box2放在第2行第2列?

时间:2018-06-03 03:09:01

标签: html css css3 css-grid two-column-layout

我得到的布局如下:

enter image description here

我的期望是:
box1放入row 1 column 2box2 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>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

容器是布局中的网格,您可以定位直接子项,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;
}