WCAG:应用样式时,Firefox 和 Edge 不会在焦点输入元素上显示轮廓

2024-04-16

我正在创建一个表单,它遵循一些 WCAG 准则。其中之一是:

G165:使用平台的默认焦点指示器,以便继承高可见度的默认焦点指示器 https://www.w3.org/TR/2016/NOTE-WCAG20-TECHS-20161007/G165.

这条规则的总结是:

操作系统具有本机焦点指示,这在许多用户代理中都可用。焦点指示器的默认渲染并不总是高度可见,甚至在某些背景下可能很难看到。然而,许多平台允许用户自定义该焦点指示器的呈现。辅助技术还可以改变原生焦点指示器的外观。如果您使用本机焦点指示器,则其可见性的任何系统范围设置都将转移到网页。如果您绘制自己的焦点指示器,例如通过为页面的各个部分着色以响应用户操作,这些设置将不会保留,并且 AT 通常无法找到您的焦点指示器。

(emphasis mine)

为了遵守此规则,我想保留操作系统对表单元素的默认焦点指示器。


然而,我在这里面临着不同的问题。

在 macOS 上的 Firefox 中:

As soon as the I change the style of the element (e.g. by changing the border settings), the default focus gets lost1.

这很奇怪,因为border and outline是不同的风格属性。

在 Windows 上的 Firefox 和 Edge 中:

The browsers show a focus indicator that is only a differently colored border, when entering a form element – as long as it's unstyled. Chrome on the other hand does have an indicator as an outline – like on macOS2.


这是演示该行为的片段(或者尝试这个fiddle https://jsfiddle.net/kL0t7pjh/):

.b {
  border: 1px solid red;
}
<form>
    <input class="a" type="text">
    <input class="b" type="text">
</form>

作为旁注:如果label- 元素存在或不存在。


我的问题是:

  • 为什么 Firefox 和 Edge 在 macOS 和 Windows 上的反应如此?为什么他们使用边框而不是文档的轮廓?
  • 即使应用了自定义样式,如何强制这些浏览器显示操作系统的默认焦点指示器?
  • 当有人创建了自定义指示器时,即使默认指示器不再显示,它是否仍会显示在 Firefox 和 Edge 中?

带着这些问题,我想知道这个规则是否有可能实现。最后也许我必须手动设置outline on focus在所有浏览器中获得相同的行为并跳过此规则。


1 Here's a screenshot showing the problem on macOS:

2 Here's a screenshot showing the problem on Windows:


这不是一个程序性的答案,而是如何遵守准则。这里的关键是G165是一种“技术”,而不是指南。

相关指南实际上是WCAG 2.4.7(焦点可见)。您可以使用多种不同的技术来满足此准则。在这种情况下,G149、G165 和 G195 是与网页最相关的技术。

那么我从哪里得到这些信息呢?从给定的链接开始:

G165:使用平台的默认焦点指示器,以便保留高可见度的默认焦点指示器。 https://www.w3.org/TR/2016/NOTE-WCAG20-TECHS-20161007/G165

在“适用性”下有一个指向“如何满足 2.4.7”的链接,您可以看到几种“足够的技术”,您可以从中选择符合指南的技术。在这种情况下,由于 G165 和 G149 在不同浏览器中的工作方式不一致,您可能需要“G195:使用作者提供的、高度可见的焦点指示器”。


WCAG 文档一开始会让人感到困惑,但是当您退后一步看看它们的排列方式时,事情就会变得容易多了。他们对其进行了设置,以便您可以开始快速参考,并在您需要阅读更多内容时链接到其他文档。

图表来自WCAG 2 文件 https://www.w3.org/WAI/standards-guidelines/wcag/docs/

我整天都在看如何满足 WCAG 2.1 https://www.w3.org/WAI/WCAG21/quickref/- 它旨在作为可定制的快速参考,因此您可以过滤它显示的指南(例如合规性级别 A+AA 或其他)、根据您正在使用的技术显示哪些技术以及许多其他内容。打开侧边栏并切换到那里的过滤器选项卡,您就会明白我的意思。定制后将其添加为书签。

从该文档中,我可以查看可用的技术并单击以阅读它们,并且有一个指向“理解”文档的相关部分的链接,我可以阅读该链接以更好地理解该指南的全部内容。

另外,对于技术,您可能会注意到它们都以一个字母或几个字母开头。 G 是“通用”(用于任何技术),其余对应于过滤器部分中的“技术”。我关闭或忽略任何 SL(Silverlight)、FLASH(闪存)、SMIL(Smil https://en.wikipedia.org/wiki/Synchronized_Multimedia_Integration_Language)和 PDF 技术,因为它们不相关。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WCAG:应用样式时,Firefox 和 Edge 不会在焦点输入元素上显示轮廓 的相关文章

  • 将 css 应用到区域地图

    我创建了一个非常大的地图 其中包含许多多边形区域 每个多边形区域超过 20 个坐标 用于地图内的区域 但是 您无法将 css 添加到 AREA 标记 因为我被告知它不是可见元素 我想要做的是 当用户将鼠标悬停在地图上的某个区域上时 我希望通
  • 设置 datetime-local 的默认时间值

    我使用这个 html 标签作为日期时间选择器
  • JPEG 颜色在不同浏览器中呈现不一致

    我正在使用的徽标在不同浏览器中的呈现方式有所不同 具体图片可查here https pbs twimg com profile images 741262755236356096 BqpBjB8R jpg and on 这个推特页面 htt
  • 如何为 CSS 规则选择元素的曾孙?

    给定这个 HTML 我该如何选择rt block改变CSS仅当嵌套在 rt header 中时如图所示 div div class rt container div class rt grid 6 rt alpha div class rt
  • 在 Google Chrome/Chromium 和 Safari 中拖放文件上传?

    Firefox 3 6 中可以实现拖放文件上传 给出类似的东西 Firefox 3 6 中的本机拖放文件上传 https stackoverflow com questions 2121018 native drag drop file u
  • 本地化 html 文档(事后看来)

    我正在用 PHP 构建一个 Web 应用程序 我已经决定 在整个过程中 以不同的语言提供该应用程序 我的问题是这样的 我不想费力地浏览模板文件中的所有 HTMl 代码来查找需要用动态生成的 lang 变量替换的 单词 有没有一个工具可以突出
  • 当 max-height 固定时 CSS 自动列计数

    我希望实现一个布局 其中一个元素 在我的例子中是一个 ul 当高度达到一定限制时扩展到 2 或更多 列 例如 如果高度仅够容纳 3 个项目 而我有 5 个项目 则第 4 和第 5 个项目将转到第二列 该列仅在需要时创建 我尝试通过设置来做到
  • 如何在网页中进行字体抗锯齿?

    我一直在研究如何在网页上执行字体抗锯齿 以下是我找到的一些解决方案 webkit font smoothing属性 它似乎只适用于最新的浏览器 我没有尝试过 Google Font API 这很棒 而且易于使用 我想知道如何离线使用它 一个
  • AngularJS ui.router 更改页面并转到特定部分

    我使用 AngularJSui router在我的应用程序中 对于新的用例 我想更改视图index html到我的partialview options html 我的options html有不同的部分 不同视图之间的路由工作正常 但我想
  • 如何使用 selenium 获取带有 css 选择器的所有元素的直接子元素?

    我已经尝试过使用 gt 语法 但 selenium 不接受它 我知道有一种方法可以使用 Xpath 获取它 但我们的整个项目是使用 CSS 选择器编写的 我试图存储一个列表 其中包含元素的所有直接子元素 但不包含其子元素 后代 当我使用 语
  • 将文本环绕在 div 两侧

    这是我试图实现的目标 与以下HTML div p some text p div Awesome content div div 有这个 text text text text text text text text text text t
  • 将 a:visited 链接设置为与 a:link 和 a:hover 相同的状态

    我正在研究一个想法 其中我的 a link 有一个状态 蓝色 无下划线等 而 a hover 为白色 我想要我的访问过的链接具有相同的状态 as a link and a hover 这可能吗 大多数常见浏览器都支持吗 a a link a
  • 用 CSS 设置背景图像的大小?

    可以用CSS设置背景图片的大小吗 我想做类似的事情 background url bg gif top repeat y background size 490px 但这样做似乎是完全错误的 CSS2 如果需要放大图像 则必须在图像编辑器中
  • 什么是 .tpl 文件? PHP、网页设计

    有人希望我重新设计一个用 PHP VideoCMS 运行的网站 但是当我要求他向我发送源代码时 他给了我 tpl 文件而不是 php 其中有一些代码 include file header tpl p article br table wi
  • 我应该在 HTML 中添加什么内容来确保用户获得我的页面的最新版本,而不是旧版本?

    我有一个主要由 CDN 提供服务的静态 HTML 网站 加上一些到服务器的 AJAX 并且确实希望用户的浏览器缓存所有内容 直到我更新任何文件 然后我希望用户的浏览器获取新版本 对于我网站上的所有类型的静态文件 HTML JS CSS 图像
  • 如何使用 PHP 返回 JQuery .ajax() 的正确成功/错误消息?

    我不断收到错误警报 MYSQL 部分没有任何问题 查询被执行 我可以在数据库中看到电子邮件地址 客户端
  • 如何让第一个字母像报纸风格一样推入段落

    我创建了一些 CSS 来处理段落中的第一个字母 看起来也更大 如何使第一个字母向下并向左推 这样它就不会高于该行本身 并在需要时将其他行缩进到右侧 见附图 text article color 000 text article first
  • 我可以在 Open Graph 中使用相对路径吗? [复制]

    这个问题在这里已经有答案了 我正在尝试设置相对路径og image元数据如下 在共享调试器时 我收到以下警告 推断属性 og image 属性应该明确 提供 即使可以从其他标签推断出值 有没有办法在Open Graph中使用相对路径 不 o
  • CSS 叠加在图像背景上

    我想在图像背景上叠加 以便更清楚地看到图像上方的白色文本 为什么不会这个解决方案 http codepen io anon pen aBJErm work HTML div class bg1 image cover p H p div C
  • javascript 在提示后显示用户输入

    我想在用户完成信息输入后显示用户输入的内容 当用户到达最后一个提示时 我希望页面显示他们输入的内容 例如 如果他们在名称部分下输入 apples 我希望它在底部代码的 P1 部分中列出单词 apples 我是 javascript 的新手

随机推荐

  • Spring Boot加载图片后上传

    我能够将图像上传到服务器 并且可以在路径中找到我的图像 static images gallery 现在 当我尝试加载上传的图像时 应用程序不显示主题 仅在应用程序重新启动后 我遇到了同样的问题 因为启动时加载了静态目录 上传路径一定要放在
  • 当mysql WHERE子句为空时,返回所有行

    randomvariable GET randomvariable search SELECT from objects WHERE transactiontype randomvariable order by id DESC Now i
  • 在asp.net mvc中动态添加文本框并将值保存到数据库

    我想通过单击添加按钮动态添加文本框 可以删除文本框 最后可以保存文本框中的列表值 我的模特班 public class CustModel public List
  • 使用 ASP.New MVC 4 Web Api 进行授权过滤器依赖注入

    我正在尝试在 MVC 4 Web Api 授权过滤器上实现依赖项注入 我创建了一个继承自 ActionDescriptorFilterProvider 的 FilterProvider public class UnityWebApiFil
  • jQuery validate:如何添加正则表达式验证规则?

    我正在使用jQuery http en wikipedia org wiki JQuery验证插件 好东西 我想迁移现有的 ASP NET 解决方案以使用 jQuery 而不是 ASP NET 验证器 我缺少替代品正则表达式验证器 我希望能
  • Unity3d NavMeshAgent.isOnNavMesh 在特定功能中变为 false

    我更改了标题以反映添加的澄清信息 我正在遵循 Unity 教程 1 当需要测试播放器单击控件时 Unity 给出了一个错误 SetDestination 只能在已放置在导航网格上的活动代理上调用 据我所知 我的代理处于活动状态并且位于 na
  • Android IPC远程服务调用显示错误

    我想做一个关于IPC通信 服务之间的通信 的演示应用程序 我在用AIDL为了那个原因 我发现大部分教程RemoteService和客户端在同一个包中 我实际上是分开做的 同时传递我正在使用的对象Parcelable方法和面临的错误 它说就像
  • C++ 中函数原型和函数实现有什么区别?

    我应该将我的实现放在一个文件中 将原型放在头文件中 但按照我的理解 充满原型的头文件不会很有用 这些是什么东西 其中之一与定义或声明相同吗 函数原型是声明其参数类型的函数声明 这种区别是历史性的 在 C 中 可以声明没有原型的函数 但在 C
  • 如何获取 Kubernetes POD 的活动连接数

    我是 Kubernetes 新手 对于我们的应用程序 我需要找到 pod 的活动连接数 我分析了一下 发现我们可以使用 Istio 等 Kubernetes 插件来获取此类数据 但我了解到 使用此类插件可能会导致内存命中 因为插件为每个 P
  • Python Flask Cors 问题

    我对 Python 有点陌生 但在使用 Node 应用程序时遇到了同样的问题 我正在向本地 Python 服务器发出一个非常标准的 jQuery AJAX 请求 init function callback var token config
  • 非交互式“git flow release finish”

    我如何使用git flow release finish以不要求合并提交消息的方式 这 m正如我所料 flag 没有提供此功能 当然 目标是能够以不需要交互的方式编写脚本 可以设置环境变量 export GIT MERGE AUTOEDIT
  • Maven-resources-plugin不会复制.metadata文件夹

    我正在尝试使用 maven resources plugin 复制文件夹或以下结构 root metadata Project gitignore 项目目录和 gitignore 文件被复制 但 metadata 目录由于某种原因被遗漏 如
  • Go:使用 gdb 打印变量

    在此程序中 如何使用调试器中断执行并打印 i 的值 package main import fmt func main x abc i 3 fmt Println i fmt Println x 我无法打印我 不过我可以打印 x go bu
  • 将工具栏设置为片段中的操作栏

    我想将我的工具栏设置为操作栏 但由于您的工具栏是布局元素 因此它必须位于您的布局中 现在我的布局在我的片段中 我在布局中添加了工具栏 并在片段中调用它 Toolbar Toolbar toolbar Toolbar getActivity
  • 如何有条件地要求 Angular 4 中的表单输入?

    我正在使用模板驱动的表单来添加任务 并且有 2 个数字类型的输入字段用于估计完成任务的分钟数 一个字段用于估计小时数和 另一个是完成任务的估计分钟数 因为任务估计可以在几小时内完成 例如1hrs 或者像这样的小时和分钟1小时30分钟 所以我
  • PHP7 - nusoap - nusoap_client 有一个已弃用的构造函数

    我想用nusoap on Laravel 5 3 with PHP7 但是当我生病时尝试安装它composer从该包中 https github com codecasts nusoap php7 https github com code
  • unique_together 中的多个元组

    当我定义模型并在元中使用 unique together 时 我可以定义多个元组 这些是进行 OR 运算还是 AND 运算 可以说我有一个模型 class MyModel models Model druggie ForeignKey dr
  • 给定一个字符串数组,返回所有属于字谜词组的字符串

    给定一个字符串数组 返回所有属于字谜词的字符串组 我的解决方案 对于数组中的每个字符串单词 对其进行排序 O m lg m m 是单词的平均长度 建立一个哈希表 将排序后的单词作为键放入哈希表中 并生成该单词的所有排列 O m 如果字典中存
  • 用于验证 Google Analytics UA 编号的正则表达式

    我并不是 100 清楚 Google Analytics UA 编号始终是 6 位数字 一个破折号和 2 位数字 正如 Google 在其文档中经常提到的那样 常见的反例是帐户部分使用少于 6 个 配置文件使用少于 1 4 个 所有示例都始
  • WCAG:应用样式时,Firefox 和 Edge 不会在焦点输入元素上显示轮廓

    我正在创建一个表单 它遵循一些 WCAG 准则 其中之一是 G165 使用平台的默认焦点指示器 以便继承高可见度的默认焦点指示器 https www w3 org TR 2016 NOTE WCAG20 TECHS 20161007 G16