目录
可读(3.1)
可预测 (3.2)
焦点行为
不要妨碍焦点
在需要用户输入时帮助用户 (3.3)
确保识别错误
提供标签
确保标签始终可见
在适当的情况下提供进一步说明
确定必填字段
结论
首页 web前端 html教程 了解辅助功能:第 5 部分

了解辅助功能:第 5 部分

Aug 31, 2023 pm 08:33 PM

这是我们要讨论的最后一个原则。从广义上讲,它规定网站的内容和导航必须易于理解。虽然实施许多这些建议的责任在于插件或主题的“最终用户”(或发布内容的任何人),但这些插件和主题的开发人员可以实施一些建议。

可读(3.1)

第一条准则指出内容应该“可读且易于理解”。许多建议与内容的阅读水平以及不常用单词、缩写词和首字母缩略词的使用有关,这些都与开发人员无关。

我们可以实施的一项建议是网页的人类语言应该能够以编程方式识别。为此,应通过 lang 属性在 元素上指定语言。此外,应使用 dir 属性来指示内容是否从右到左。

WordPress 通过提供 language_attributes() 来简化此操作,它会打印所需的属性。在主题的 header.php 中:

<html <?php language_attributes(); ?>>
登录后复制

language_attributes() 函数设置网站的语言,并在必要时设置方向,并过滤输出,允许插件(例如多语言插件)根据需要更改属性。

可预测 (3.2)

第二条准则指出,网站应该以可预测的方式呈现和运行。通过确保主题的 HTML 标记结构良好且符合逻辑,可以实现许多建议。除此之外,还有大量的“不要做”的建议——建议不要进行破坏网页自然和逻辑行为的更改。

焦点行为

我们在本系列的第四篇文章(“可操作”)中提到不使用 tabindex。此建议在此基础上声明,当某个项目获得焦点时,不应将其视为触发页面状态的某些更改。

例如,接收焦点的表单按钮不应导致该表单提交,接收焦点的链接不应导致该链接被激活。这并不是说当相应的项目获得焦点时,工具提示或导航菜单的子菜单不应出现。这些例子并不构成状态的改变。粗略地说,您可以将获得焦点的项目与悬停在其上的项目等同起来。

不要妨碍焦点

您应该避免从接收焦点的元素上移除焦点。例如,您绝对不应该执行以下操作:

$('a').on('focus',function(){ $(this).blur(); });
登录后复制

在需要用户输入时帮助用户 (3.3)

确保识别错误

默认情况下,与主题开发人员相关的唯一表单是登录/注册、搜索和评论表单。其中,主题开发人员通常只关注后两者。由于搜索表单永远不会导致“错误”,因此我们本节重点关注评论表单。

WordPress 在通知用户错误以及确切地告知他们错误是什么方面做得非常好。然而,它是通过允许用户离开原始页面并向他们呈现“死胡同”错误页面来实现这一点的。

了解辅助功能:第 5 部分

如果用户返回到原始页面,表单将失去焦点,他们将不得不再次找到它。更好的解决方案是阻止用户在正确填写表单之前提交表单。但是,在执行此操作时,必须向用户传达输入的值无效的信息,否则您实际上已经将他们困住了。

有大量可用的客户端验证脚本,并且构建您自己的简单验证脚本也非常容易。重要的是:

  1. 用户离开具有无效值的字段(或尝试提交表单)后出现的错误消息应传达存在错误以及错误所在的位置(即标识字段)。
  2. 应使用 ARIA 属性将错误消息识别为警报:role="alert"
  3. 在适当的情况下,错误消息应尽可能明确地告知用户输入的值未被接受的原因。

这是一个简单的示例,基于 WebAIM 自己的可访问表单验证示例(我鼓励您阅读),如果名称字段为空,它会添加一条错误消息。

    jQuery(document).ready(function($) {
	
		$('#author').on( 'blur', function( e ){
			var value = $(this).val();
			if( !value ){
				if( $('#author-error').length > 0 ){
					$('#author-error').remove();
				}

				$( '<p id="author-error" class="alert alert-error" role="alert"></p>' )
					.insertAfter( $('#author') )
					.text( 'Name field error: Please provide a name' );
				
			}else if( $('#author-error').length > 0 ){
				$('#author-error').remove();
			}

		});
	
	});
登录后复制

WebAIM 示例还可以防止用户使字段无效,并将他们返回到字段以更正错误。如果您这样做,我建议您在值为空时不要将用户返回到该字段,否则您会让那些意外给予字段焦点但无意的用户感到沮丧提交表格。

正如本系列前面所述,您不应仅依靠颜色或位置来传达含义。在这种情况下,错误消息应该从文本中明显看出,它们相关的字段也应该如此。

提供标签

主题只能使用 comment_form() 来显示评论表单,并且这会以可访问的方式处理标签。同样,默认搜索表单也不需要进一步的工作。但是,在自定义或设计这些表单时,您应该:

确保标签始终可见

标签必须始终可见。具体来说,这意味着占位符不构成标签,并且不应用作搜索。造成这种情况的原因有几个:

  1. 对屏幕阅读器的支持不一致。
  2. 占位符通常采用柔和的颜色,可能难以阅读。
  3. 由于当字段获得焦点时占位符会消失,因此可能会给有认知障碍的人带来可用性问题。

在适当的情况下提供进一步说明

如果表单字段需要进一步的说明,可以在字段之后提供这些说明,但仍然使用 aria-scribedby 属性显式链接到该字段。该属性引用的元素的内容在field的标签后面读出。

以 W3C 网站为例:

<form> 

    <label for="fname">First name</label> 
    <input name="" type="text" id="fname" aria-describedby="fname-description"> 
    
    <p id="fname-description">A bit of instructions for this field linked with aria-describedby. </p> 

</form>
登录后复制

但是,您应该注意,屏幕阅读器对此的支持并不一致。

确定必填字段

必填字段应使用 aria-required="true" 属性进行标记。由 comment_form() 生成的默认 WordPress 评论表单已处理此问题,因此您需要在此处执行任何操作。但是,如果您选择自定义评论表单,则应该注意这一点。

结论

本文总结了我们关于 W3C 可访问性原则的粗略主题开发人员指南以及如何实施这些原则。在本系列的最后一篇文章中,我们将研究一些简单的方法,以进一步推动并积极鼓励和帮助我们的主题(或插件)的最终用户生成可访问的内容。

以上是了解辅助功能:第 5 部分的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

&gt; gt;的目的是什么 元素? &gt; gt;的目的是什么 元素? Mar 21, 2025 pm 12:34 PM

本文讨论了HTML&lt; Progress&gt;元素,其目的,样式和与&lt; meter&gt;元素。主要重点是使用&lt; progress&gt;为了完成任务和LT;仪表&gt;对于stati

&lt; datalist&gt;的目的是什么。 元素? &lt; datalist&gt;的目的是什么。 元素? Mar 21, 2025 pm 12:33 PM

本文讨论了html&lt; datalist&gt;元素,通过提供自动完整建议,改善用户体验并减少错误来增强表格。Character计数:159

HTML5中跨浏览器兼容性的最佳实践是什么? HTML5中跨浏览器兼容性的最佳实践是什么? Mar 17, 2025 pm 12:20 PM

文章讨论了确保HTML5跨浏览器兼容性的最佳实践,重点是特征检测,进行性增强和测试方法。

&lt; meter&gt;的目的是什么。 元素? &lt; meter&gt;的目的是什么。 元素? Mar 21, 2025 pm 12:35 PM

本文讨论了HTML&lt; meter&gt;元素,用于在一个范围内显示标量或分数值及其在Web开发中的常见应用。它区分了&lt; meter&gt;从&lt; progress&gt;和前

我如何使用html5&lt; time&gt; 元素以语义表示日期和时间? 我如何使用html5&lt; time&gt; 元素以语义表示日期和时间? Mar 12, 2025 pm 04:05 PM

本文解释了HTML5&lt; time&gt;语义日期/时间表示的元素。 它强调了DateTime属性对机器可读性(ISO 8601格式)的重要性,并在人类可读文本旁边,增强Accessibilit

如何使用HTML5表单验证属性来验证用户输入? 如何使用HTML5表单验证属性来验证用户输入? Mar 17, 2025 pm 12:27 PM

本文讨论了使用HTML5表单验证属性,例如必需的,图案,最小,最大和长度限制,以直接在浏览器中验证用户输入。

视口元标签是什么?为什么对响应式设计很重要? 视口元标签是什么?为什么对响应式设计很重要? Mar 20, 2025 pm 05:56 PM

本文讨论了视口元标签,这对于移动设备上的响应式Web设计至关重要。它解释了如何正确使用确保最佳的内容缩放和用户交互,而滥用可能会导致设计和可访问性问题。

&lt; iframe&gt;的目的是什么。 标签?使用时的安全考虑是什么? &lt; iframe&gt;的目的是什么。 标签?使用时的安全考虑是什么? Mar 20, 2025 pm 06:05 PM

本文讨论了&lt; iframe&gt;将外部内容嵌入网页,其常见用途,安全风险以及诸如对象标签和API等替代方案的目的。

See all articles