【问题标题】:Invisible padding in input submit输入提交中的不可见填充
【发布时间】:2013-08-24 02:12:48
【问题描述】:

我有两个盒子。第一个包含简单的文本。第二个包含一个没有边框、填充、边距的提交输入。

那么,为什么输入的高度比简单的文本要高?

我知道我可以使用填充并移除框高度,但出于我的目的,我需要将其设置为静态高度,并准备好此框以可重复用于输入和简单文本。

我尝试使用line-heightvertical-align 属性,但没有成功。

是什么导致了额外的line-height

有一个example to play with it

编辑:我最近看到,问题只出在 Firefox...

我认为可能是 Firefox CSS 中的 line-height 属性:

但是...首先我无法相信我的眼睛所看到的。一个 !important 在内部浏览器样式表中?这正常吗?这可能是一个可能的答案吗?

Similar question with the same answer.
但是 Leniel 建议的技巧对我不起作用...

【问题讨论】:

  • 奇怪的行为。它在 Chrome 和 IE 中显示正常,但不是 FF...
  • 对我来说它似乎不是行高,因为它还在左右两侧创建了不是行高的空间。

标签: firefox css


【解决方案1】:

额外的填充在您的 .buttonarrownext 类上。

固定 CSS 类:

.buttonarrownext {
    cursor:pointer; 
    position:relative; 
    border-radius:4px; 
    text-align:center; 
    background:white; 
    border:1px solid red; 
    padding: 0px; /* changed the padding here */
    margin:0px auto; 
    display:inline-block;
}

一个JSFiddle 来演示。

【讨论】:

  • 谢谢,但正如我所说,“我知道我可以使用填充”,我的问题是为什么第二个框中有更多的填充。两个“buttonarrownext”中的填充相同......但第二个更高,甚至删除了填充(在 FF 中)。
  • @Arkana 我明白你现在的意思了......我完全误解了你的问题。也就是说,我找不到任何文档,但似乎 Firefox 将默认的填充量应用于无法重置的输入元素。这是我唯一的结论
【解决方案2】:

正如我在评论中提到的,它在 IE 和 Chrome 中显示正常,但在 FF 中显示不好。一个快速的解决方案是将input 替换为button

更新后的 html 将是:

<div class="container"> 
  <div class="buttonarrownext">Siguiente</div>
  <div class="buttonarrownext"><button class="reset">Siguiente</button></div>
    </div> 

没有真正的区别,因为您仍然可以使用按钮的单击处理程序触发提交事件... 找出 FireFox 这样做的原因会很有趣……

更新小提琴 - http://jsfiddle.net/QfPGW/2/

【讨论】:

  • 我不知道我们是否可以更改标记(我们正在使用 JSF Primefaces 来做到这一点),但这是一个不错的解决方案。如果我能找出为什么会发生这种情况……非常感谢:)
  • 另一个部分修复是为 div.buttonarrownext 设置一个固定的高度,但这引入了另一个问题,即文本没有垂直居中 - jsfiddle.net/QfPGW/3 和固定的文本对齐方式 - jsfiddle.net/QfPGW/4
  • 是的,它会“剪切”底部的字母 :( Firefox...我相信你... tu quoque, fili mi.... :(
猜你喜欢
  • 1970-01-01
  • 2011-10-19
  • 2016-07-20
  • 1970-01-01
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
  • 2013-08-30
  • 2023-03-27
相关资源
最近更新 更多