为啥这个按钮在 Firefox 中的对齐方式不同?

Posted

技术标签:

【中文标题】为啥这个按钮在 Firefox 中的对齐方式不同?【英文标题】:Why is this button aligned differently in Firefox?为什么这个按钮在 Firefox 中的对齐方式不同? 【发布时间】:2021-12-01 04:56:15 【问题描述】:

给定this html page:

<html>
<body>before<button style="height: 100px"></button>after</body>
</html>

Chrome 和 Firefox 中的页面布局非常不同。这是火狐:

这是 Chrome:

在 Chrome 中,按钮似乎跟随vertical-align: baseline。但在 Firefox 中,它似乎遵循vertical-align: middle,或类似的东西。

是什么导致了这种布局差异?关于 CSS 规范,哪个浏览器是正确的?

【问题讨论】:

两者都遵循基线,但 Firefox 计算基线的方式不同。在按钮内添加一个字母以查看 Firefox 正在考虑这样的基线。 IMO Chrome 在这里是正确的,但按钮总是很奇怪,所以我对这种行为并不感到惊讶 同意 Temani,但即使是 Chrome 的行为似乎也不正确。如果按钮包含单个空块元素,则不足以移动基线,但在 Chrome 中它将其移动到中间,以匹配 Firefox。无论如何,一个没有内容的按钮是一个非常糟糕的主意,你不应该这样做,所以在实践中它几乎没有什么区别。 【参考方案1】:

据我了解,每个浏览器都以不同的方式处理预定义的 HTML 样式。浏览器并没有真正“正确”的方式来处理这些事情,因为从技术上讲,它们要决定如何定义样式。

在两种浏览器上,vertical-align: bottom 的工作方式似乎相同。如果那是您的预期目标,那可能值得考虑。我还发现一个帖子说你可以包含this CSS 文件,所以这也值得一试。希望对一些人有所帮助!

【讨论】:

以上是关于为啥这个按钮在 Firefox 中的对齐方式不同?的主要内容,如果未能解决你的问题,请参考以下文章

自定义字体在 IE 中不显示

为啥使用 :before 高度时,WebKit 上的对齐标记列表不同?

为啥 Firefox 对待 Helvetica 和 Chrome 的方式不同?

为啥文件打开对话框在单击 FireFox 中的按钮时打开两次

图像垂直对齐问题

为啥 Firefox 中的网络字体不能在不同的域上工作?