我问这是我自己的教育,如果这是一种不好的做法,请随意这么说。
我希望通过为每个元素设置单独的网格行设置来覆盖元素#one #two #three
和#four
的父属性grid-template-rows: 100px 100px 100px 100px;
。
元素#one
和#two
像这样设置它们时,正如我期望的那样响应:
#one{
grid-row: 1/ span 4 ;
}
#two{
grid-row: 1/ span 4 ;
}
但是,当我尝试将类似设置应用于#3和#four时,我没有得到预期的结果。我希望#three
和#four
的高度与#one
和#two
完全相同。相反,它们会飞到页面的一侧。
我希望它显示与#one和#two类似的元素。它不起作用:
#three{
grid-row: 2/ span 4 ;
}
#four{
grid-row: 2/ span 4 ;
}
我想知道如何解决此问题以及正确的单个值以设置#three
和#four
来覆盖网格模板行,如所述。
[您需要重写grid auto-placement algorithm,当未明确定义网格区域时,该区域将计算渲染网格区域的“正确”位置。
您正在定义行。只需定义列即可。
.container {
display: grid;
grid-template-columns: 1fr 2fr;
grid-template-rows: 100px 100px 100px 100px 100px 100px;
grid-gap: 10px;
}
#one {
grid-row: 1 / span 4;
grid-column: 1;
}
#two {
grid-row: 1/ span 4;
grid-column: 2;
}
#three {
grid-row: 2 / span 4;
grid-column: 1;
}
#four {
grid-row: 2/ span 4;
grid-column: 2;
}
* {
font-family: Helvetica;
font-size: 1em;
color: white;
text-align: center;
}
img {
display: block;
margin: 20px 20px;
margin-left: auto;
margin-right: auto;
border-radius: 50%;
border-width: 5px;
border-style: solid;
border-color: rgb(141, 110, 99);
max-width: 50%;
height: auto;
}
.container div:nth-child(even) {
background-color: orange;
}
.container div:nth-child(odd) {
background-color: purple;
}
<div class="container">
<div id="one">1
<div class="content-container"></div>
</div>
<div id="two">2
<div class="content-container">text</div>
</div>
<div id="three">3
<div class="content-container">text</div>
</div>
<div id="four">4
<div class="content-container">text</div>
</div>
<div id="five">5
<div class="content-container">text</div>
</div>
<div id="six">6
<div class="content-container">text</div>
</div>
</div>