我得到的布局如下:
我的期望是:
将box1
放入row 1
column 2
和box2
row2
column 2
。
为什么不能将box1
和box2
中的内容放入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;
答案 0 :(得分:0)
容器是布局中的网格,您可以定位直接子项,box1
和box2
嵌套在侧边栏内。因此,通常从容器中,您可以定位porse1
,sidebar
和porse2
,但您可以使用contents
显示值将侧边栏子项视为容器的直接子项。
因此,一个解决方案是使用contents
显示值:
.sidebar {
display: contents;
}
但要注意browser support。
另一种解决方案是让侧边栏也成为网格,并根据需要布置子项目box1
和box2
,例如:
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;
}