如何垂直居中具有较高兄弟元素的元素?

How to vertically center element that has a taller sibling element?

在此示例中,我想将“3”在 "list-li" 元素中垂直居中,因为同级元素具有动态高度。我尝试使用:

position: relative;
top: 50%; 

..但是好像不行

HTML:

<ul class="list-1">
    <li>
        <div class="list-1-num">
            3    
        </div>
        <div class="list-1-content list-1-content-signup">
            Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur venenatis, lectus cursus cursus elementum.
        </div>
    </li>
</ul>

CSS:

.list-1 {
    font-size: 20px;
    list-style: none;  
}

.list-1 li {
    margin-bottom: 70px;
    overflow: hidden;
    text-align: left;
    list-style: none;
}

.list-1-num {
    float: left;
    font-size: 25px;
    margin-right: 20px;
}

.list-1-content {
    background-position: 0 50%;
    background-repeat: no-repeat;
    background-size: 45px 40px;
    float: left;
    width: 300px;
    line-height: 25px;
}

Codepen 演示:https://codepen.io/aguerrero/pen/OZevgJ

您可以使用 Flexbox 代替 float 并在父项上设置 align-items: center

.list-1 {
  font-size: 20px;
  list-style: none;
}

.list-1 li {
  margin-bottom: 70px;
  overflow: hidden;
  text-align: left;
  list-style: none;
  display: flex;
  align-items: center;
}

.list-1-num {
  font-size: 25px;
  margin-right: 20px;
}

.list-1-content {
  background-position: 0 50%;
  background-repeat: no-repeat;
  background-size: 45px 40px;
  width: 300px;
  line-height: 25px;
}
<ul class="list-1">
  <li>
    <div class="list-1-num">
      3
    </div>
    <div class="list-1-content list-1-content-signup">
      Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur venenatis, lectus cursus cursus elementum.
    </div>
  </li>
</ul>