什么是-webkit-focus-ring-color?

发布于 2024-12-06 04:54:16 字数 547 浏览 0 评论 0原文

我想将 webkit 中聚焦输入框的 outline 效果重现到非 webkit 浏览器。我在此处找到了webkit 中使用的默认 CSS。感兴趣的行是:

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

我尝试在整个代码中搜索定义 -webkit-focus-ring-color 此处 但无法在任何地方找到它。

I want to reproduce the outline effect for focused input boxes in webkit to non-webkit browsers. I found here the default CSS used in webkit. The lines of interest are:

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

I tried making a search in the whole code for the definition -webkit-focus-ring-color here but could not find it anywhere.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

九局 2024-12-13 04:54:16

-webkit-focus-ring-color 在 WebKit 代码库中定义为每个 RenderTheme 类中的 focusRingColor。这项工作是在 2009 年 6 月作为 Jeremy Moskovich 变更集的一部分进行的。

例如,默认的 Mac 主题(Safari 使用)在 RenderThemeMac.mm(以迂回方式)为:

[NSColor keyboardFocusIndicatorColor]

(苹果非常该属性的简单文档可在线获取)。

Mac 有一个覆盖值(称为 WebCore::oldAquaFocusRingColor)用于测试(据我所知,它是为了让代码能够在浏览器渲染和参考之间进行比较)图形;使用 WebCore::usesTestModeFocusRingColor 进行切换)。它在 ColorMac.mm< 中定义/a> 如下(显然映射到 Color(125, 173, 217)):

0xFF7DADD9

Chromium/Chrome 定义 RenderThemeChromiumSkia.cpp 为:

Color(229, 151, 0, 255)

默认颜色 (在 RenderTheme.h)是纯黑色:

Color(0, 0, 0)

-webkit-focus-ring-color is defined in the WebKit codebase as focusRingColor in each RenderTheme class. That work was performed in June 2009 as part of this changeset by Jeremy Moskovich.

For instance, the default Mac theme (used by Safari) defines the colour in RenderThemeMac.mm (in a roundabout way) as:

[NSColor keyboardFocusIndicatorColor]

(Apple's very light documentation of that property is available online).

There is an override value for the Mac (called WebCore::oldAquaFocusRingColor) to be used for testing (near as I can tell it's for the code to be able to perform comparison between the browser rendering and a reference graphic; it is toggled using WebCore::usesTestModeFocusRingColor). It's defined in ColorMac.mm as the following (which apparently maps to Color(125, 173, 217)):

0xFF7DADD9

Chromium/Chrome defines the colour in RenderThemeChromiumSkia.cpp as:

Color(229, 151, 0, 255)

The default colour (specified in RenderTheme.h) is pure black:

Color(0, 0, 0)
夏尔 2024-12-13 04:54:16

-webkit-focus-ring-color 在 Firefox 中不起作用。不过,您可以使用系统颜色Highlight作为替代。

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

另请参阅网站,了解为什么重置outline样式通常是一个坏主意。

-webkit-focus-ring-color does not work in Firefox. You can use the system color Highlight as a replacement though.

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

Also see this site on why resetting outline styles is usually a bad idea.

他夏了夏天 2024-12-13 04:54:16

使用这个jsFiddle。我在 Windows 7 上的 Chrome 14 中得到了 rgb(229, 151, 0)

Use this jsFiddle. I got rgb(229, 151, 0) in Chrome 14 on Windows 7.

哑剧 2024-12-13 04:54:16

前言:
在 Mac 上使用 Chrome,在使用正常浏览器模式时,我会看到蓝色的轮廓颜色。当我使用设备视图时,我得到黄色/金色轮廓颜色。

不知道为什么会改变——实际上非常令人困惑。请参阅下面的示例。

设备启用,黄色轮廓

正常浏览器,蓝色轮廓

FWIW:
Using Chrome on a Mac, I get a blue outline color when using normal browser mode. When I use the device view, I get a yellow/golden outline color.

Not sure why it changes - was actually very confusing. See examples below.

device-enabled, yellow outline

normal-browser, blue outline

┼── 2024-12-13 04:54:16

以下代码尝试找到最接近系统颜色的解决方案:

*:focus {
    box-shadow: 0 0 1px 3px rgba(59, 153, 252, .7);
    box-shadow: 0 0 0 3px activeborder; /* Blink, Chrome */ 
    box-shadow: 0 0 0 3px -moz-mac-focusring; /* Firefox */
    outline: auto 0 -webkit-focus-ring-color; /* Webkit, Safari */
}

The following code tries to find the closest solution to the system colors:

*:focus {
    box-shadow: 0 0 1px 3px rgba(59, 153, 252, .7);
    box-shadow: 0 0 0 3px activeborder; /* Blink, Chrome */ 
    box-shadow: 0 0 0 3px -moz-mac-focusring; /* Firefox */
    outline: auto 0 -webkit-focus-ring-color; /* Webkit, Safari */
}
你列表最软的妹 2024-12-13 04:54:16

如今,revert具有良好的浏览器支持(耶!),用于回滚到默认的UA样式,这里是我的2020 “请让我有轮廓”片段(通常伴随 !important 声明):

:focus {
  outline: -webkit-focus-ring-color auto thin;
  outline: revert;
}

或者如果您希望对 outline 的第一个实例使用普通属性:

  outline-color: -webkit-focus-ring-color;
  outline-style: auto;
  outline-width: thin;
  outline: revert;

Nowadays, the revert value has good browser support (yay!), which is used to roll back to the default UA styles, here's my 2020 "please let me have outlines" snippet (usually accompanied with !important declarations):

:focus {
  outline: -webkit-focus-ring-color auto thin;
  outline: revert;
}

Or if you wish to use longhand properties for the first instance of outline:

  outline-color: -webkit-focus-ring-color;
  outline-style: auto;
  outline-width: thin;
  outline: revert;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文