Search code examples
csscss-multicolumn-layout

CSS columns have a horizontal gap?


I am having some issue trying to align css columns and a grid. Do css columns have some horizontal gap by default? If so, how to configure it?


Solution

  • Yes. But you can get rid of it by setting column-gap to 0:

    .grid {
      display: grid;
      grid-template-columns: 1fr 1fr;
      margin: 20px 0;
    }
    
    .grid>div {
      height: 40px;
    }
    
    .css-cols {
      columns: 4;
      column-gap:0;
      list-style: none;
      margin: 0;
      padding: 0;
    }
    
    .css-cols li {
      height: 20px;
      margin-bottom: 5px;
    }
    
    .grid>div:nth-child(odd),
    .css-cols li:nth-child(odd) {
      background: black;
    }
    
    .grid>div:nth-child(even),
    .css-cols li:nth-child(even) {
      background: red;
    }
    <div class="grid">
      <div></div>
      <div></div>
    </div>
    
    <ul class="css-cols">
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
      <li></li>
    </ul>

    The browser's default spacing is used between columns. For multi-column layout this is specified as 1em.