代码之家  ›  专栏  ›  技术社区  ›  Crashalot

CSS网格:将方形单元格与具有一致网格间隙的容器边缘对齐?

  •  4
  • Crashalot  · 技术社区  · 6 年前

    其目标是将方形单元与其容器的前后边缘对齐,同时在每行单元之间以及每行单元之间实现一致的间隙。

    这个代码笔很接近,但有两个问题:(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>
    2 回复  |  直到 6 年前
        1
  •  3
  •   Temani Afif    6 年前

    问题是网格单元很好,但是里面的内容( li )与它们不匹配。

    enter image description here

    而不是在 您可以考虑百分比值,在某些情况下,它们会大一点,但仍然是平方元素:

    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>
        2
  •  0
  •   Arshiya Khanam    6 年前

    这是你第一个问题的答案,不需要给李宽限。

    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>