css - 如何在不同字体大小的内联容器中垂直居中?

标签 css

我刚刚发现了display: tabledisplay: table-cell; vertical-align: middle 今天对齐 div 垂直的方法。

我在我的代码的很多地方都使用了它,但我遇到了一个无法让它工作的特定情况!

当我想垂直对齐 n 个包含具有相同 font-size 元素的元素时,一切正常,但如果我想在一个 inline 元素上使用更大的文本与其他人相比,情况如下:

HTML:

<div class="wrapper">
    <div class="menu">
        <div class="left"><span>LEFT</span>
        </div>
        <div class="middle"><span>MIDDLE</span>
        </div>
        <div class="right"><span>RIGHT</span>
        </div>
    </div>
</div>

CSS:

button {
    margin:0;
    padding:0;
    cursor:pointer;
}
.wrapper {
    height: 300px;
    width: 600px;
    background-color:red;
    white-space: nowrap;
}
.menu {
    height: 100%;
    width: 80%;
}
.left {
    height: 100%;
    width: 20%;
    display:inline-table;
    background-color:blue;
}
.middle {
    height: 100%;
    width: 60%;
    display:inline-table;
    background-color:orange;
}
.right {
    height: 100%;
    width: 20%;
    display:inline-table;
    background-color:green;
}
span {
    display:table-cell;
    vertical-align:middle;
}
.middle span {
    font-size:5em;
}

结果:

enter image description here

Here is a JSFiddle showing the issue

如何避免?对于这种情况,也许有比 inline-table 技巧更好的方法?

最佳答案

只需垂直对齐容器的直接子级,在您的情况下,这将完成工作:

.menu > div { 
  vertical-align: middle;
}

关于css - 如何在不同字体大小的内联容器中垂直居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18499385/

相关文章:

css - Font Awesome 5 在使用 JS+SVG 版本时显示空方 block

css - 如何在 Odoo 10 POS 插件中使用自定义 CSS

javascript - 如何实现组合折叠/展开侧边栏?

css - 完整日历 CSS - 在日历 Canvas 外显示事件

css - Lightview3 - 固定图像位置(图像太低)

html - 如何使用 CSS 对齐图标旁边的文本?

jquery - 在文本后显示所需的星号?

html - 如何使水平对齐的选项卡宽度与浏览器缩放保持一致?

css - 垂直下拉菜单

html - 尽管宽度和高度为 100%,但父 div 仍大于子 div