目标是使方形单元格与其容器的前缘和后缘对齐,同时在每一行之间以及每一行之间实现一致的间隙。
此Codepen很接近,但是存在两个问题:(1)垂直间隙与水平间隙不同; (2)正方形与前缘齐平,但与后缘不齐。
https://codepen.io/anon/pen/wREmjo
ul {
display: grid;
width: 260px;
grid-template-columns: repeat(auto-fit, minmax(40px, 1fr));
grid-auto-rows: 1fr;
grid-gap: 10px;
list-style-type: none;
border: 2px solid black;
box-sizing: border-box;
margin: 0;
padding: 0;
background: gray;
}
li {
width: 40px;
height: 40px;
}
<ul class="palette">
<li style="background-color: rgb(0, 0, 255);"></li>
<li style="background-color: rgb(51, 51, 51);"></li>
<li style="background-color: rgb(203, 58, 135);"></li>
<li style="background-color: rgb(237, 106, 90);"></li>
<li style="background-color: rgb(155, 193, 188);"></li>
<li style="background-color: rgb(255, 247, 174);"></li>
<li style="background-color: rgb(184, 51, 106);"></li>
<li style="background-color: rgb(61, 44, 46);"></li>
<li style="background-color: rgb(105, 173, 212);"></li>
<li style="background-color: rgb(245, 223, 22);"></li>
<li style="background-color: rgb(252, 186, 86);"></li>
<li style="background-color: rgb(0, 185, 252);"></li>
<li style="background-color: rgb(181, 141, 182);"></li>
<li style="background-color: rgb(58, 50, 96);"></li>
</ul>
答案 0 :(得分:3)
问题是网格单元很好,但是(li
)中的内容与它们不匹配。
您可以考虑使用百分比值,而不是在li
上使用固定的宽度/高度,百分比值在某些情况下会稍大一些,但仍将是正方形元素:
ul {
display: grid;
width: 260px;
grid-template-columns: repeat(auto-fit, minmax(40px, 1fr));
grid-auto-rows: 1fr;
grid-gap: 10px;
list-style-type: none;
border: 2px solid black;
box-sizing: border-box;
margin: 0;
padding: 0;
background: gray;
animation:change 5s linear alternate infinite;
}
li {
width: 100%;
padding-top:100%;
}
@keyframes change {
to {width:120px}
}
<ul class="palette">
<li style="background-color: rgb(0, 0, 255);"></li>
<li style="background-color: rgb(51, 51, 51);"></li>
<li style="background-color: rgb(203, 58, 135);"></li>
<li style="background-color: rgb(237, 106, 90);"></li>
<li style="background-color: rgb(155, 193, 188);"></li>
<li style="background-color: rgb(255, 247, 174);"></li>
<li style="background-color: rgb(184, 51, 106);"></li>
<li style="background-color: rgb(61, 44, 46);"></li>
<li style="background-color: rgb(105, 173, 212);"></li>
<li style="background-color: rgb(245, 223, 22);"></li>
<li style="background-color: rgb(252, 186, 86);"></li>
<li style="background-color: rgb(0, 185, 252);"></li>
<li style="background-color: rgb(181, 141, 182);"></li>
<li style="background-color: rgb(58, 50, 96);"></li>
</ul>
答案 1 :(得分:0)
这是您第一个问题的答案,不需要给li加上宽度。
ul {
display: grid;
width: 260px;
grid-template-columns: repeat(auto-fit, minmax(40px, 1fr));
grid-auto-rows: 1fr;
grid-gap: 10px;
list-style-type: none;
border: 2px solid black;
box-sizing: border-box;
margin: 0;
padding: 5px;
background: gray;
}
li {
/* width: 40px; */
height: 40px;
}
<ul class="palette">
<li style="background-color: rgb(0, 0, 255);"></li>
<li style="background-color: rgb(51, 51, 51);"></li>
<li style="background-color: rgb(203, 58, 135);"></li>
<li style="background-color: rgb(237, 106, 90);"></li>
<li style="background-color: rgb(155, 193, 188);"></li>
<li style="background-color: rgb(255, 247, 174);"></li>
<li style="background-color: rgb(184, 51, 106);"></li>
<li style="background-color: rgb(61, 44, 46);"></li>
<li style="background-color: rgb(105, 173, 212);"></li>
<li style="background-color: rgb(245, 223, 22);"></li>
<li style="background-color: rgb(252, 186, 86);"></li>
<li style="background-color: rgb(0, 185, 252);"></li>
<li style="background-color: rgb(181, 141, 182);"></li>
<li style="background-color: rgb(58, 50, 96);"></li>
</ul>