html - CSS:div 中的图标/跨度防止文本垂直居中对齐。如何解决这个问题?
问题描述
我遇到了一个奇怪的行为。假设您有一个div
包含文本并且您希望文本垂直居中。为此,您可以将容器的height
and设置line-height
为相同的值。一切都很出色。
但是现在您决定在组合中添加一个图标(通过图标字体)。并且您希望此图标比文本大得多。应该没有问题。只需添加一个span
或i
并将其设置font-size
为您想要的任何内容。应该管用。
但事实并非如此。文本现在突然挂在靠近底部的某个地方。直到您将图标更改font-size
为与容器元素相同。
这里发生了什么?
#container {
line-height: 30px;
height: 30px;
font-size: 15px;
border: 1px solid black;
}
#icon {
font-size: 30px;
}
#icon2 {
font-size: 15px;
}
<link href="https://use.fontawesome.com/releases/v5.4.2/css/all.css" rel="stylesheet"/>
<div id="container">
Centered Text
</div>
<div id="container">
<span id="icon"><i class="fas fa-arrows-alt-v"></i></span>
Centered Text
</div>
<div id="container">
<span id="icon2"><i class="fas fa-arrows-alt-v"></i></span>
Centered Text
</div>
解决方案
下面我使用flexbox进行对齐。这样我就不必关心高度和/或行高。
#container {
font-size: 15px;
border: 1px solid black;
display: flex;
align-items: center; /* Vertical alignment */
}
#icon {
font-size: 60px;
}
#icon2 {
font-size: 30px;
}
<link href="https://use.fontawesome.com/releases/v5.4.2/css/all.css" rel="stylesheet"/>
<div id="container">
Centered Text
</div>
<div id="container">
<span id="icon"><i class="fas fa-american-sign-language-interpreting"></i></span> Centered Text
</div>
<div id="container">
<span id="icon2"><i class="fas fa-american-sign-language-interpreting"></i></span> Centered Text
</div>
推荐阅读
- android - onChildAdded 开始被调用的时间太长
- javascript - show next/previous items of an array
- angular - 角度扁平化可观察流
- python - 有没有办法在嗖嗖声的 QueryParser 中返回距离
- jenkins - Where's the list of available functions or API available to me by default in a Jenkinsfile?
- java - 无法让我的 MouseListener 为高中的口袋妖怪游戏工作
- git - 在具有许多子模块的项目中实现 git flow 的最佳方法是什么
- r - 如何在ggplot2中创建日期为月份的极坐标图
- c++ - 链表的这个赋值运算符是否进行深层复制?
- batch-file - 如何将字符串和用户输入回显到文件中