【问题标题】:line-height on input button only works with border on Chrome/Safari输入按钮上的 line-height 仅适用于 Chrome/Safari 上的边框
【发布时间】:2020-02-22 15:14:55
【问题描述】:

Chrome 和 Safari 上的input[type="submit"] 按钮在与border 属性结合使用时似乎只尊重line-height 属性。

在 Chrome 的调试器中查看计算得到的 line-height 值会显示带有边框的按钮具有预期的计算值,而没有边框的按钮具有 line-height: normal

Firefox 显示尊重line-height 属性的两个版本。 Chrome 和 Safari 没有。

作为额外的奖励,将元素从 input[type="submit"] 更改为 button 可以让它们按预期工作。

任何想法为什么会发生这种情况?

CSS

.border { line-height: 3rem; border: solid 1px black; }
.noborder { line-height: 3rem; }

HTML

<input type="submit" class="border" value="input[type='submit'] with border" />
<input type="submit" class="noborder" value="input[type='submit'] without border" />

截图

浏览器测试

  • Firefox 73.0 - 按预期工作。
  • Google Chrome 80.0.3987.106 - 意外结果。
  • Safari 13.0.5 - 意外结果。

【问题讨论】:

  • 您需要专门覆盖按钮样式才能使 Chrome 正常工作(不知道,关于 Safari)。看看this demo on w3schools。或者在线搜索“css 样式提交按钮”
  • 然而,添加一个样式会导致不同的样式生效是没有意义的。在您发送的链接中,注释掉borderbackground-color。仅显示较短按钮的轮廓。现在添加回background-color 属性,按钮现在回到它们的填充驱动高度。看起来这个演示可以用来展示我所询问的行为。
  • 您的意思是“已被服务”还是需要更多帮助?你的回复不清楚....
  • 我需要帮助。我想了解观察到的行为是否是设计使然,为什么,或者是否是错误。这样,我们可以设计适当的解决方法,以及针对哪些浏览器。我感谢任何见解。
  • 您的问题(和调查结果)已经暗示了“设计行为”。进行控制并创建自己的按钮样式(即使它看起来与 html 默认样式完全相同),这样您就不必检查每个浏览器的差异。

标签: html css google-chrome safari


【解决方案1】:

你也可以使用vertical-align: middle;而不是行高。

【讨论】:

    猜你喜欢
    • 2012-09-09
    • 2015-09-20
    • 2017-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多