我得到的布局如下:
我期望的是:
将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>
最佳答案
容器是布局中的网格,您可以放置直接子项,并且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;
}