【问题标题】:Restore Webkit's CSS outline on input field在输入字段上恢复 Webkit 的 CSS 轮廓
【发布时间】:2013-01-18 17:40:01
【问题描述】:

我想恢复某些表单字段的默认 CSS outline 设置,但我希望它恢复为默认 Webkit 或浏览器特定样式。

我正在使用的页面在所有元素上都应用了outline: none,我只想在一些元素上恢复为默认设置。有什么想法吗?

【问题讨论】:

标签: css


【解决方案1】:

您的实际问题 (straight from WebKit's default html.css styles) 的答案是这样的:

:focus {
    outline: auto 5px -webkit-focus-ring-color;
}

-webkit-focus-ring-color的值是在各个平台上分别确定的(如果你超级热衷,可以找WebCore::systemFocusRingColor)。实际上,这些值因平台而异。

在 OS X Lion 上的 Safari v6 和 Chrome v20 中,实际值为:

outline: rgb(94, 158, 215) auto 5px;

…在 Windows 上的 Chrome v20 和 Linux 上的 Chromium v​​18 中,我得到的值是:

outline: rgb(229, 151, 0) auto 5px;

this great StackOverflow answer中所述,您可以run this jsFiddle to calculate the outline colour on your own machine

【讨论】:

  • 这应该是选择的答案,尽管 duopixel 确实提供了一些很好的见解。
【解决方案2】:

不是用 outline: none 重置,而是用 outline-width: 0 重置。这可以防止浏览器清除样式,并且当您重新应用宽度时,样式仍然存在。

input:focus {
  outline-width: 0;
}

input.nostyle:focus {
  outline-width: 5px;
}

http://jsfiddle.net/VT4Hb/

【讨论】:

  • 虽然这不是实际的答案,但它是一个非常有效的解决方案。谢谢!
  • 现代方式是outline: initial
  • 但是outline: initial 没有按预期工作。实际上它什么也没做。 :-(
【解决方案3】:

在你想要的没有大纲的字段上使用一个类。

.nool { outline: none; }

【讨论】:

  • OneOfOne 是正确的。 CSS 不允许您“撤消”样式。如果可以的话,删除任何将“outline:none”应用于每个元素的 CSS 规则,并使用一个类来专门针对哪些表单元素不应该有轮廓。
  • @jbarreiros:尽管它有效,但将类放在所有东西上并不是一个优雅或语义化的解决方案。 Duopixel 的解决方案使用纯 CSS 实现了这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-22
  • 2019-05-23
  • 2021-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-06
相关资源
最近更新 更多