在Firefox中删除额外的按钮间距/填充

时间:2011-04-01 19:08:21

标签: css firefox button spacing

请参阅此代码示例:http://jsfiddle.net/Z2BMK/

Chrome / IE8看起来像这样

enter image description here

Firefox看起来像这样

enter image description here

我的CSS是

button {
    padding:0;
    background:#080;
    color:white;
    border:solid 2px;
    border-color: #0c0 #030 #030 #0c0;
    margin:0;
}

如何在两个浏览器中更改代码示例以使按钮相同?我不想使用基于JavaScript的超链接,因为它们不能与键盘上的空格键一起使用,并且必须有一个href URL,这不是处理事情的干净方法。

我的解决方案,自Firefox 13

button::-moz-focus-inner { margin: -1px; padding: 0; border-width: 1px; }

3 个答案:

答案 0 :(得分:164)

添加:

button::-moz-focus-inner {
    padding: 0;
    border: 0
}

http://jsfiddle.net/thirtydot/Z2BMK/1/

包含上面border规则对于两个浏览器中的按钮看起来相同是必要的,但是当Firefox中的按钮为active时,它也会删除虚线轮廓。许多开发人员摆脱了这个虚线轮廓,可选择用更具视觉友好性的东西替换它。

答案 1 :(得分:8)

要在输入元素上修复它,也要添加

input[type="reset"]::-moz-focus-inner, 
input[type="button"]::-moz-focus-inner, 
input[type="submit"]::-moz-focus-inner, 
input[type="file"] > input[type="button"]::-moz-focus-inner

简单完美!

答案 2 :(得分:0)

@thirtydot 答案的更正版本:

button:: {
    padding: 0px;
    border: 0px;
}

button::-moz-focus-inner {
    padding: 0px;
    border: 0px;
}

关于 Firefox 87:

    button 中的
  • button::-moz-focus-inner 不能是类。 (例如,.mybutton::-moz-focus-inner 不起作用)

  • 还必须存在 button { padding:0px; border: 0px; } 样式(可以为每个类指定此样式)。