如何使用单独选择的网格行覆盖CSS网格模板行:1 / span 4样式语法

问题描述 投票:0回答:1

我问这是我自己的教育,如果这是一种不好的做法,请随意这么说。

我希望通过为每个元素设置单独的网格行设置来覆盖元素#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来覆盖网格模板行,如所述。

代码:https://jsfiddle.net/ek2r6a19/

html css css-grid
1个回答
0
投票

[您需要重写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>
© www.soinside.com 2019 - 2024. All rights reserved.