适当地垂直分布列表

Properly equally spreading list vertically

我已经搜索过这个问题,找到了一些类似的答案,但不完全是我要找的,所以这里是。

我有一个无序列表,需要垂直平均分布。
这是我的:

<div class="icons">
<ul>
    <li><div class="twitter-icon"><img src="images/twitter.png"></div></li>
    <li><div class="github-icon"><img src="images/github.png"></div></li>
    <li><div class="linkedin-icon"><img src="images/linkedin.png"></div></li>
</ul>
</div>

.icons {
    position:absolute;
    top:0;
    right:5%;
    height:100vh;
}
.icons ul {
    display:table;
    table-layout: fixed;
    height:100%;
    margin:0;
    padding:0;
}
.icons li {
    display: table-row;
}

这是结果:

这就是我要找的:

我希望这些信息足以解释我的问题。

您可以像这样使用 flexbox 显示 而不是 table

display: flex; /* define a flexbox */
flex-direction: column; /* place it vertically*/
justify-content: space-around; /* spread it vertically */

参见下面的演示:

.icons {
  position: absolute;
  top: 0;
  right: 5%;
  height: 100vh;
}

.icons ul {
  display: flex;
  flex-direction: column;
  justify-content: space-around;
  height: 100%;
  margin: 0;
  padding: 0;
}

.icons li {
  display: table-row;
}
<div class="icons">
  <ul>
    <li>
      <div class="twitter-icon"><img src="http://placehold.it/100x100"></div>
    </li>
    <li>
      <div class="github-icon"><img src="http://placehold.it/100x100"></div>
    </li>
    <li>
      <div class="linkedin-icon"><img src="http://placehold.it/100x100"></div>
    </li>
  </ul>
</div>