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

Css 删除Firefox中的额外按钮间距/填充,css,firefox,button,spacing,Css,Firefox,Button,Spacing,请参见以下代码示例: Chrome/IE8看起来像这样 Firefox看起来像这样 我的CSS是 button { padding:0; background:#080; color:white; border:solid 2px; border-color: #0c0 #030 #030 #0c0; margin:0; } 如何更改代码示例以使两种浏览器中的按钮相同?我不想使用基于JavaScript的超链接,因为它们不适用于键盘上的空格键

请参见以下代码示例:

Chrome/IE8看起来像这样

Firefox看起来像这样

我的CSS是

button {
    padding:0;
    background:#080;
    color:white;
    border:solid 2px;
    border-color: #0c0 #030 #030 #0c0;
    margin:0;
}
如何更改代码示例以使两种浏览器中的按钮相同?我不想使用基于JavaScript的超链接,因为它们不适用于键盘上的空格键,而且它必须有
href
URL,这不是一种干净的处理方式

我的解决方案,从Firefox13开始
按钮::-moz焦点内部{margin:-1px;padding:0;边框宽度:1px;}

添加以下内容:

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


包含上面的
边框
规则对于两种浏览器中的按钮看起来都一样是必要的,但是当Firefox中的按钮处于
活动状态时,它也会删除虚线轮廓。许多开发人员摆脱了这种虚线轮廓,可以选择用更直观的东西来代替它。

要在输入元素上修复它,还可以添加

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

简单就是完美

对@thirtydot答案的更正版本:

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

button::-moz-focus-inner {
    padding: 0px;
    border: 0px;
}
关于Firefox 87:

  • 按钮中的
    按钮::-moz focus internal
    不能是类。(例如,
    .mybutton::-moz焦点内部
    不工作)

  • 还必须存在
    按钮{padding:0px;border:0px;}
    样式(可以为每个类提供此样式)


要在Firefox中使用Chrome风格的聚焦光晕,请使用
按钮{background:/*somethine here*/}按钮:聚焦{-moz-box shadow:0 0px 3px#C80;}
。这弥补了没有虚线的缺陷,并提供了我所追求的浏览器一致性。这正是我所需要的。谢谢要在输入元素上修复它,请添加
input[type=“reset”]::-moz焦点内部,input[type=“button”]:-moz焦点内部,input[type=“submit”]:-moz焦点内部,input[type=“file”]>input[type=“button”]:-moz焦点内部
Awesome!非常感谢。这有帮助@Stefan它似乎工作正常(除了
文件
css)。很抱歉,在我尝试使用的页面上,一定有冲突的css。谢谢。您对该解决方案的浏览器兼容性有任何了解吗?
input[type=“file”]>input[type=“button”]:-moz-focus-internal
是否多余,因为您已经添加了
input[type=“button”]:-moz-focus-internal
?你知道吗?@GeorgeBailey:浏览器兼容性是Firefox 3+,此代码不会影响任何其他浏览器。@GeorgeBailey我认为此回答是对评论的回应。你为什么添加
边距:-1px
?它是否以某种方式连接到
边框:2px
?请参阅我的编辑。默认情况下,
-moz focus-internal
边框宽度
1px
,因此将
边框宽度
写入代码是多余的,但它可以更清楚地说明发生了什么。这可能也有助于将来的打样。为了回答您的问题,Firefox中的
边框宽度是造成差异的原因,添加
边距:-1px
是比我以前的解决方案更兼容的解决方案。我认为公认的答案在视觉上是等效的,但比您的解决方案更好。Accepted answer删除FF添加的内容,并使所有浏览器中的内容呈现方式相同。您的解决方案在其位置上保留由FF添加的额外边框,并使用
边距:-1px
隐藏两像素边框中的一个像素。这太复杂了。如果:1)渲染引擎中出现错误(这种情况会发生),2)边框颜色不同,3)放大,则会中断。为了说明您的解决方案可能存在的问题,我准备了一把小提琴:。请放大并注意出现了一个红色边框。我可以看到您回答的唯一优点是保留FF的“按钮激活时的虚线轮廓”功能是的,这正是使我的解决方案更好的原因。应该有东西告诉用户他们的键盘在哪里。