21

我正在尝试垂直对齐 div 中具有不同高度的两个元素:

<div class="footer-icons">
    <div id="footer-twitter">
         <img src="images/twitter.png" width="40" alt="">    
    </div>
    <div id="footer-fb">
         <div class="fb-like" data-href="http://facebook.com/user" data-send="false" data-layout="button_count" data-width="160" data-show-faces="false" data-font="arial"></div>
    </div>
</div>

twitter div 的高度为 40px,fb div 的高度为 20px。目前正在发生的是 fb div 与 twitter 图像的底部边缘垂直居中。这是CSS:

.footer-icons {
    padding-top:40px;
    width:300px;
    margin:auto;
    text-align:center;
    vertical-align:middle;
}

#footer-twitter {
    display:inline-block;
}

#footer-fb {
    display:inline-block;
}

我究竟做错了什么?

4

4 回答 4

33

将垂直对齐放在内部 div 上

#footer-twitter{
  display:inline-block;
  vertical-align:middle;
}

#footer-fb{
  display:inline-block;
  vertical-align:middle;
}
于 2012-09-24T17:35:54.457 回答
12

display: flex是您工具带中的一个非常酷的工具。这里有一些有用的文档可以帮助您开始使用它。

特别是在您的情况下,这些属性将很有用:

align-items:center- 这将垂直对齐所有子元素的中心

justify-content:center- 这将在父容器中水平居中子元素(不确定你是否想要这个,但也可能有帮助)

.footer-icons {
    border: 1px solid #000;
    padding-top:40px;
    width:300px;
    margin: auto;
    
    display:flex;
    align-items:center;
    justify-content:center;
}
<div class="footer-icons">
    <div id="footer-twitter">
        Center me  
    </div>
    <div id="footer-fb">
         <img src="https://upload.wikimedia.org/wikipedia/commons/c/cd/Facebook_logo_%28square%29.png" width="40" alt="">   
    </div>
</div>

于 2019-03-28T17:18:33.373 回答
3

只需添加CSS 即可解决您的问题display: flex; align-items: center;。谢谢.footer-icons

.footer-icons {
    padding-top:40px;
    width:300px;
    margin:auto;
    text-align:center;
    vertical-align:middle;
    display: flex;
    align-items: center;
}
于 2019-03-28T17:32:21.103 回答
2

定义一个line-height等于或大于更大的图标:

.footer-icons {
    ...
    line-height: 32px;
}
于 2012-09-24T17:42:52.250 回答