【问题标题】:Auto grid sizing allowing nth max in a row in css自动网格大小调整允许在 css 中连续第 n 个最大值
【发布时间】:2020-05-28 02:04:13
【问题描述】:

我正在尝试在 CSS 网格中自动调整列大小。就像我有一个 child-div 一样,它将覆盖 Mother-div 中的全部空间。但是,如果有多个 child-div,它将允许 row 中包含特定数量的 child-div。这里我使用 CSS 网格。但我做不到。这是我的代码

<div class="mother-div">
   <div class="child-div>
   </div>
   <div class="child-div>
   </div>
</div> 

css

.child-div {
    background-color: #257790;
    height: 100px;
    width: 100%;
}

.mother-div {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
    grid-gap: 1em;
}

【问题讨论】:

    标签: css css-grid


    【解决方案1】:

    您正在查看的内容几乎是自动的,网格的行为几乎是开箱即用的。

    你只需要将grid-auto-flow设置成你想要的方向

    要限制每行的项目数,您需要使用 nth-child 选择器将它们设置为特定列

    这种风格:

    .child-div:nth-child(5n+1) {
        grid-column: 1;
    }
    

    选择 n 个值 0、1、2 等的子代,在公式 5n+1 中给出值 1、6、11、16...

    所有这些孩子都将进入第 1 列,这符合每行 5 个元素的要求。

    .child-div {
        background-color: #257790;
        height: 50px;
        width: 100%;
    }
    
    .child-div:nth-child(5n+1) {
        grid-column: 1;
    }
    .child-div:nth-child(5n+2) {
        grid-column: 2;
    }
    .child-div:nth-child(5n+3) {
        grid-column: 3;
    }
    .child-div:nth-child(5n+4) {
        grid-column: 4;
    }
    .child-div:nth-child(5n) {
        grid-column: 5;
    }
    
    .mother-div {
        margin: 10px;
        width: 500px;
        border: solid 3px black;
        display: grid;
        grid-gap: 1em;
        grid-auto-flow: column; 
    }
    <div class="mother-div">
       <div class="child-div">
       </div>
    </div> 
    <div class="mother-div">
       <div class="child-div">
       </div>
       <div class="child-div">
       </div>
    </div>
    <div class="mother-div">
       <div class="child-div">1
       </div>
       <div class="child-div">2
       </div>
       <div class="child-div">3
       </div>
       <div class="child-div">4
       </div>
       <div class="child-div">5
       </div>
       <div class="child-div">6
       </div>
    </div>

    【讨论】:

    • 谢谢。它几乎可以工作。但我想在一行中保留最大特定数量的列。我该怎么做?
    • 我没有意识到这个要求。我已经更新了 sn-p。
    • 非常感谢。你的回答符合我的要求。如果可能有 1 个子 div,它将覆盖整个宽度。如果有特定数量的子 div 像 5 ,那么它将覆盖全宽但在同一行。如果数字大于 5 。第 6 个子 div 或单词将移动到第 2 行,依此类推.....
    • 你能解释一下为什么 child-div:nth-child(5n+1){grid-column: 1;}.child-div: nth-child(5n+2){grid-column: 2;} .....它可以工作但无法理解这个逻辑
    • 第 6 个子 div 如何放置在下一行
    猜你喜欢
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    相关资源
    最近更新 更多