如何添加border-radius
网格行的最后一个元素(蓝色和灰色),就像第一个元素一样?最好不用js
https://codepen.io/ck1e/pen/VwmGoLZ
.colors {
width: 320px;
display: grid;
grid-template-columns: repeat(auto-fit, 60px);
grid-auto-rows: 40px;
overflow: hidden;
border-radius: 12px;
}
.color:nth-child(1) {
background-color: red;
}
.color:nth-child(2) {
background-color: #272729;
}
.color:nth-child(3) {
background-color: #C71F2D;
}
.color:nth-child(4) {
background-color: #FAE03C;
}
.color:nth-child(5) {
background-color: #1F5DA0;
}
.color:nth-child(6) {
background-color: #F96714;
}
.color:nth-child(7) {
background-color: #00A28A;
}
.color:nth-child(8) {
background-color: #58C9D4;
}
.color:nth-child(9) {
background-color: #E1E1E1;
}
.color:last-child {
border-radius: 0px 0px 12px 0px;
}
<div class="colors">
<div class="color"></div>
<div class="color"></div>
<div class="color"></div>
<div class="color"></div>
<div class="color"></div>
<div class="color"></div>
<div class="color"></div>
<div class="color"></div>
<div class="color"></div>
</div>
仅借助 Grid CSS - 没办法。
我提出以下选项,使用 JavaScript。我们在做什么?
border-radius: 12px
,它应该可以工作。然而,这是所有操作的重点——用父元素动态包装所有子元素,不包括空格;width
删除属性。代码分步编写:
如果所有元素都不适合一行或没有用相同数量的元素填充所有行,并且一些元素没有完全填充就转移到下一行,那么我们找到最右边的元素前一个完全填充的线将他的右下角四舍五入。所以可能的情况是:
如果每行中有相同数量的元素,并且它们是均匀分布的:
如果有不止一行并且没有足够的元素来完全填充相同数量的元素的所有行:
如果元素的数量少于可能的数量,则填充一行:
更改
width
为所有元素集合的宽度:如果后者是基本的,即使它与上面的不重合(如您从链接中看到的那样),那么也:
通过元素迭代变体:https ://codepen.io/ck1e/pen/VwmGoLZ