在相等的列中排列li元素

时间:2018-10-05 16:27:42

标签: css

尝试在元素ul中创建一组均匀的菜单列。在Internet上寻找解决方案时,我试图获得预期的效果,但无济于事。关于CSS列代码,我非常虚弱,所以请原谅我。

到目前为止,我已经设法编写了这样的代码:

ol{
  width:100%;
}

ol > li{
  display:inline-block;
  vertical-align:top;
  width:calc(100% / 5);
  background:red;
}
<ol>
    
    <li>
      <span>A</span>
      <ul>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
      </ul>
    </li>
    
    <li>
      <span>B</span>
      <ul>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
      </ul>
    </li>
    
    <li>
      <span>C</span>
      <ul>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
      </ul>
    </li>
    
    <li>
      <span>D</span>
      <ul>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
      </ul>
    </li>
    
    <li>
      <span>E</span>
      <ul>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
      </ul>
    </li>
    
    <li>
      <span>F</span>
      <ul>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
      </ul>
    </li>
    
    <li>
      <span>G</span>
      <ul>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
      </ul>
    </li>
    
</ol>

上面的代码正确地排列了列,而如果C列较大,则A-E,B-F列之间会有空格。如何获得与图片相同的效果? :show image(删除列之间的空格)

1 个答案:

答案 0 :(得分:2)

您可以使用flex。根据您所需的顺序,您可以这样操作:

ol{
  width:100%;
  display:flex; 
  flex-wrap: wrap;
}

ol > li{
  display:inline-block;
  vertical-align:top;
  width: 40%;
  background:red;
  margin: 10px;
}
<ol>
    
    <li>
      <span>A</span>
      <ul>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
      </ul>
    </li>
    
    <li>
      <span>B</span>
      <ul>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
      </ul>
    </li>
    
    <li>
      <span>C</span>
      <ul>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
      </ul>
    </li>
    
    <li>
      <span>D</span>
      <ul>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
      </ul>
    </li>
    
    <li>
      <span>E</span>
      <ul>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
      </ul>
    </li>
    
    <li>
      <span>F</span>
      <ul>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
      </ul>
    </li>
    
    <li>
      <span>G</span>
      <ul>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
          <li><a href="">Link</a></li>
      </ul>
    </li>
    
</ol>

或者像这样:

.wrapper {
  flex-direction: column; 
  width: 40%;
  margin: 10px; 
}

ol{
  width:100%;
  display:flex; 
  flex-wrap: wrap;
  flex-direction: row; 
}

ol .wrapper > li{
  counter-increment: listblock;  
  display:inline-block;
  vertical-align:top;
  background:red;
  margin: 10px;
  width:100%;
}
<ol>
  <div class="wrapper">
    <li>
      <span>A</span>
      <ul>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
      </ul>
    </li>

    <li>
      <span>B</span>
      <ul>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
      </ul>
    </li>

    <li>
      <span>C</span>
      <ul>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
      </ul>
    </li>
  </div>
  <div class="wrapper">

    <li>
      <span>D</span>
      <ul>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
      </ul>
    </li>

    <li>
      <span>E</span>
      <ul>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
      </ul>
    </li>

    <li>
      <span>F</span>
      <ul>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
      </ul>
    </li>

    <li>
      <span>G</span>
      <ul>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
        <li><a href="">Link</a></li>
      </ul>
    </li>
  </div>
</ol>