在 Web 开发领域, element 经常让我们感到困惑,因为它具有保持文本垂直居中的看似神奇的能力。为了解开这个谜团,让我们分析一段 HTML 和 CSS:
<code class="html"><button class="button">Some Text</button> <div class="button">Some Text</div></code>
<code class="css">.button { background: darkgrey; height: 40px; border: 2px solid grey; width: 100%; box-sizing: border-box; font-size: 14px; font-family: helvetica; text-align: center; margin-bottom: 20px; }</code>
在这种情况下,
深入研究浏览器的魔力
检查浏览器的渲染时,我们发现了嵌套在其中的隐藏元素标签。在 Firefox 中,它称为 moz-button-content。该元素在浏览器的用户代理样式表中定义为:
<code class="css">*|*::-moz-button-content { display: block; }</code>
此隐藏元素在垂直居中文本方面起着至关重要的作用。它被设置为显示为块元素,导致该元素占据按钮的整个可用高度。在这个元素中,文本自然地居中对齐。
硬编码的垂直定位
然而,这并不是完整的故事。浏览器对
<code class="cpp">// Center child in the block-direction in the button nscoord extraSpace = buttonContentBox.BSize(wm) - contentsDesiredSize.BSize(wm); childPos.B(wm) = std::max(0, extraSpace / 2);</code>
此代码演示了浏览器有意在 moz-button-content 元素中的文本两侧添加额外的空格,有效地将其垂直居中。
放置一切都在一起
总而言之,
以上是`` 元素如何在没有显式 `line-height` 的情况下实现垂直文本对齐?的详细内容。更多信息请关注PHP中文网其他相关文章!