html - 垂直对齐基线不起作用

标签 html css

我有一个非常简单的设置:

<button>
    Lorem
</button>
<input type="text" value="Ipsum">

使用 display: inline-block 将两个元素并排放置

button, input{
    height: 34px;
    line-height: 34px;
    display: inline-block;
    box-sizing: border-box;
    vertical-align: baseline;
    padding: 0;
    margin: 0;
    border: 1px solid green;
    font-size: 14px;
}

此处示例:http://jsfiddle.net/j02ypo0v/

enter image description here

如您所见,这两个元素并没有完全对齐(偏离 1 像素)。

我知道,我可以通过将 vertical-align 更改为 middle 轻松解决此问题,但我想了解为什么存在此偏移首先。
IMO,这两个元素没有完全垂直对齐没有任何意义,因为它们共享所有 CSS 属性(尤其是 heightline-heightdisplay vertical-align)。

谁能解释一下 1px 偏移量是从哪里来的?

最佳答案

baseline对齐与文本的定位有关,而不是与元素作为一个整体的定位有关。如果我们放大 buttoninput元素并在文本下方添加一条直线,您会看到两个元素中的文本实际上在同一位置垂直对齐:

Example

我无法告诉您问题的确切原因是什么,但我所知道的是,如果您减少 line-height32px或将其增加到 35px这两个元素相互对齐,同时也使文本保持一致:

Example 2

我的猜测是,当使用 line-height 时,浏览器方面的计算有所不同。的 34px和一个 font-size14pxbutton 之间和 input元素就像你的例子一样,就好像我们确实改变了 vertical-alignmiddle正如您的问题所暗示的那样,文本不再符合:

Example 3

关于html - 垂直对齐基线不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32825841/

相关文章:

html - 将 html 图形宽度设置为其包含的图像宽度相同

jquery - 如何使用水平滚动视口(viewport)制作内联 li 100% 宽度的窗口

javascript - 将输入显示给用户 - javascript

jquery - 提供 html5 和 CSS3 特性的好库

javascript - 从 HTTP GET 返回自定义对象列表以用于 Angular 2 应用程序

jquery - 砖石无法填补我网格中的空白

javascript - Tic-Tac-Toe 游戏不会切换玩家、更新分数或更换玩家

php - 将 Wordpress "Site Title"函数放在 "Theme Options"页面中

jQuery ui 将按钮更改为平面样式

php - 站点范围内的 jQuery 音频播放器的可访问性问题