【发布时间】:2011-07-27 22:15:02
【问题描述】:
查看此代码示例:http://jsfiddle.net/Z2BMK/
Chrome/IE8 是这样的
火狐看起来像这样
我的 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; }
【问题讨论】:
-
为什么加
margin: -1px?它是否以某种方式连接到border: 2px? -
查看我的编辑。
-moz-focus-inner的border-width默认情况下是1px,因此将border-width写入代码是多余的,但它可以更清楚地说明发生了什么。它也可能有助于未来的验证。要回答您的问题,Firefox 中的border-width是造成差异的原因,添加margin: -1px是比我之前的解决方案更兼容的解决方案。 -
我认为接受的答案在视觉上是等效的,但比您的解决方案更好。接受的答案会删除 FF 添加的内容,并使内容在所有浏览器中以相同的方式呈现。您的解决方案会在其位置留下一个由 FF 添加的额外边框,并使用
margin: -1px隐藏一个像素的两像素边框。这太复杂了。如果出现以下情况,它会中断:1)渲染引擎中出现错误(发生),2)边框颜色不同,3)您放大。为了演示您的解决方案的潜在问题,我准备了一个小提琴:jsfiddle.net/Z2BMK/455。请放大并注意出现红色边框。 -
我能看到你回答的唯一好处是保留 FF 的“按钮处于活动状态时的虚线轮廓”功能
-
是的,这正是使我的解决方案变得更好的原因。应该有一些东西告诉用户他们的键盘焦点在哪里。
标签: css firefox button spacing