在Firefox中删除多余的按钮间距/填充


81

请参见以下代码示例:http : //jsfiddle.net/Z2BMK/

Chrome / IE8看起来像这样

在此处输入图片说明

Firefox看起来像这样

在此处输入图片说明

我的CSS是

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

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

我的解决方案,从Firefox 13开始

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


为什么要添加margin: -1px?它以某种方式连接到border: 2px吗?
2014年

1
看到我的编辑。的border-width-moz-focus-inner1px默认的,所以写border-width在代码是多余的,但它使得它更清楚是怎么回事。它也可能对将来的开发有所帮助。为了回答您的问题,border-widthFirefox是造成差异的原因,并且添加margin: -1px的解决方案比我以前的解决方案更兼容。
布莱恩·菲尔德

1
我认为可接受的答案在视觉上是等效的,但比您的解决方案要好。接受的答案将删除FF添加的内容,并使内容在所有浏览器中呈现相同的方式。您的解决方案在其位置保留了由FF添加的额外边框,并使用隐藏了两个像素边框的一个像素margin: -1px。这太复杂了。如果出现以下情况,它将中断:1)出现渲染引擎中的错误(发生),2)边框颜色不同,3)放大。为了演示解决方案的潜在问题,我准备了一个小提琴:jsfiddle.net/Z2BMK / 455。请放大并注意出现红色边框。
2014年

我看到的答案唯一的好处就是保留了FF的“按钮处于活动状态时的虚线轮廓”功能
Dan

是的,这正是使我的解决方案更好的原因。应该有一些内容可以告诉用户键盘的焦点。
布莱恩·菲尔德

Answers:


164

添加:

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

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

border为了使按钮在两个浏览器中看起来相同,必须包含上述规则,但是当按钮active在Firefox中时,它也会删除虚线轮廓。许多开发人员摆脱了这个点缀的轮廓,可以选择以更直观的方式替换它。


8
要在Firefox中使用Chrome样式的焦点发光,请使用button{background:/*Something here*/} button:focus{-moz-box-shadow:0 0px 3px #C80;}。这补偿了没有虚线的问题,并赋予了我所追求的浏览器一致性。
Bryan Field

这正是我所需要的。谢谢!
亚伯

11
还要在输入元素上进行修复,请添加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
Stefan

太棒了!谢谢!这有帮助!
SoWeLie 2012年

1
@Stefan jsfiddle.net/LjhQ5/1似乎工作正常(filecss除外)。抱歉,在我尝试执行的页面上肯定有冲突的CSS。谢谢。
12

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

简单完美!


您是否知道此解决方案的浏览器兼容性?
布赖恩·菲尔德

3
input[type="file"] > input[type="button"]::-moz-focus-inner因为您已经添加了input[type="button"]::-moz-focus-inner,这不是多余的吗?或者这不是您的经验吗?你知道吗?
布赖恩·菲尔德

@GeorgeBailey:浏览器兼容性是Firefox 3+,此代码不会影响任何其他浏览器。
2014年

@GeorgeBailey我认为此答案是对此评论的回应。
WynandB 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.