简体   繁体   English

Css网格,一些卡上的大尺寸,如何放置它们像这样

[英]Css grid, large size on some cards, how to place them like this

I'm using grid for this layout and I'm halfway through. 我正在使用网格进行这种布局,我已经过了一半。 As you can see number 10,20,30,40,50 gets placed on the same spot (I place them there). 你可以看到10,20,30,40,50号被放置在同一个地方(我把它们放在那里)。 I would like to have my layout as from 1 to 10 are 我希望我的布局从1到10

  • Large on the left (1,11,21,31,41...), 4 small on the right 左侧大(1,11,21,31,41 ......),右侧4小
  • Large on the right (10,20,30,40...), 4 small on the left 右侧大(10,20,30,40 ......),左侧4小

NOTE, this list can contain from 40-100 items, so using fixed positions to place it there would not be an option. 注意,此列表可以包含40-100个项目,因此使用固定位置放置它不会有选项。 Also the making nr 6 large and changing the order does not work either due to sorting. 由于分类,制作nr 6大并改变顺序也不起作用。

Hope it's clear what I'm trying to do here. 希望很清楚我在这里要做什么。

 .layout-scale { display: grid; grid-template-columns: repeat(4, 25%); grid-gap: 1rem; } .layout-scale__items { background-color: aqua; min-height: 10rem; } .layout-scale__items:nth-child(10n + 1) { background-color: deeppink; grid-column: span 2; grid-row: span 2; } .layout-scale__items:nth-child(10n + 10) { background-color: lime; grid-column: 3 / span 2; grid-row: 3 / span 2; } 
 <div class="layout-scale"> <div class="layout-scale__items">1</div> <div class="layout-scale__items">2</div> <div class="layout-scale__items">3</div> <div class="layout-scale__items">4</div> <div class="layout-scale__items">5</div> <div class="layout-scale__items">6</div> <div class="layout-scale__items">7</div> <div class="layout-scale__items">8</div> <div class="layout-scale__items">9</div> <div class="layout-scale__items">10</div> <div class="layout-scale__items">11</div> <div class="layout-scale__items">12</div> <div class="layout-scale__items">13</div> <div class="layout-scale__items">14</div> <div class="layout-scale__items">15</div> <div class="layout-scale__items">16</div> <div class="layout-scale__items">17</div> <div class="layout-scale__items">18</div> <div class="layout-scale__items">19</div> <div class="layout-scale__items">20</div> <div class="layout-scale__items">21</div> <div class="layout-scale__items">22</div> <div class="layout-scale__items">23</div> <div class="layout-scale__items">24</div> <div class="layout-scale__items">25</div> <div class="layout-scale__items">26</div> <div class="layout-scale__items">27</div> <div class="layout-scale__items">28</div> <div class="layout-scale__items">29</div> <div class="layout-scale__items">30</div> <div class="layout-scale__items">31</div> <div class="layout-scale__items">32</div> <div class="layout-scale__items">33</div> <div class="layout-scale__items">34</div> <div class="layout-scale__items">35</div> <div class="layout-scale__items">36</div> <div class="layout-scale__items">37</div> <div class="layout-scale__items">38</div> <div class="layout-scale__items">39</div> <div class="layout-scale__items">40</div> <div class="layout-scale__items">41</div> <div class="layout-scale__items">42</div> <div class="layout-scale__items">43</div> <div class="layout-scale__items">44</div> <div class="layout-scale__items">45</div> <div class="layout-scale__items">46</div> <div class="layout-scale__items">47</div> <div class="layout-scale__items">48</div> <div class="layout-scale__items">49</div> <div class="layout-scale__items">50</div> </div> 

All green boxes start at 3rd row (grid-row: 3 / span 2) so they are in the same place. 所有绿色框从第3行开始(grid-row: 3 / span 2)因此它们位于相同的位置。 Also, if I understood the pattern in your mind, you have to use indexes 1,11,21,.. and indexes 8,18,28,... 另外,如果我理解你的想法,你必须使用索引1,11,21,...和索引8,18,28,...

Try this: 尝试这个:

.layout-scale {
  display: grid;
  grid-template-columns: repeat(4, 25%);
  grid-gap: 1rem;
}
.layout-scale__items {
  background-color: aqua;
  min-height: 10rem;
}
.layout-scale__items:nth-child(10n + 1) {
  background-color: deeppink;
  grid-column: span 2;
  grid-row: span 2;
}
.layout-scale__items:nth-child(10n + 8) {
  background-color: lime;
  grid-column: span 2;
  grid-row: span 2;
}

I have landed in solving it with "fixed" position on grid-row . 我已经着手解决它在grid-row上的“固定”位置。 I have a loop in scss that generates it for the :nth-child() . 我在scss中有一个循环,它为:nth-child()生成它。 The 10 extra classes are worth it compared to the extra markup and css to solve it with a "row" "bootstrap if you will" approach, and even more css for eventually that would be for a fallback solution. 与额外的标记和css相比,10个额外的类是值得的,用“行”,“引导程序,如果你愿意”接近解决它,更多的css最终将用于后备解决方案。 For my use case it will not be more than 100 items. 对于我的用例,它不会超过100个项目。 If your case use more then 100 items just change the loop times. 如果您的案例使用超过100个项目只需更改循环时间。

$increment: 3;

// change the 10 to your wanted amount
@for $i from 1 through 10 {

    .layout-scale__items:nth-child(#{$i*10}) {
        grid-row: #{$increment} / span 2;
    }

    $increment: $increment + 4;
}

My full solution is on jsfiddle (due to internal code editor does not support scss) 我的完整解决方案是在jsfiddle (由于内部代码编辑器不支持scss)

<div class="layout-scale">
    <div class="layout-scale__items">1</div>
    <div class="layout-scale__items">2</div>
    <div class="layout-scale__items">3</div>
    <div class="layout-scale__items">4</div>
    <div class="layout-scale__items">5</div>
    <div class="layout-scale__items">6</div>
    <div class="layout-scale__items">7</div>
    <div class="layout-scale__items">8</div>
    <div class="layout-scale__items">9</div>
    <div class="layout-scale__items">10</div>
    <div class="layout-scale__items">11</div>
    ...
</div>


.layout-scale {
    display: grid;
    grid-template-columns: repeat(4, 25%);
    grid-gap: 1rem;
}

.layout-scale__items {
    background-color: aqua;
    min-height: 10rem;
}

.layout-scale__items:nth-child(10n + 1) {
    background-color: deeppink;
    grid-column: span 2;
    grid-row: span 2;
}

.layout-scale__items:nth-child(10n + 10) {
    background-color: lime;
    grid-column: 3 / span 2;
}

$increment: 3;
@for $i from 1 through 10 {
    .layout-scale__items:nth-child(#{$i*10}) {
        grid-row: #{$increment} / span 2;
    }
    $increment: $increment + 4;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM