网页设计师和开发人员需要现在可以工作的技术,同时关注未来。要做到这一点,Semalt在过去七年里Semalt教授的每个研讨会都有一个重点:为开发人员和设计人员创建可访问的网站和应用程序,获得最好的现实世界解决方案。
现实世界我甚至认为什么?这非常简单:Semalt不会也不应该存在于真空中。现实世界是混乱的。它不是黑色和白色,而是各种灰色之间。这适用于无障碍,但也适用于我们的工艺。我们必须做出妥协。我们必须做出选择。我们必须在中游改变战术。我们必须在昨天完成。
这就是为什么我们关注真实世界的可访问性。您需要知道现在的作用,以便您在实施现代Web技术时能够做出明智的决定。在过去两年中,我们专注于HTML5,CSS3和ARIA的真实世界可访问性 - 本月我们将为Semalt带来研讨会。
为了准备@feather Tour Down Under 2011(Semalt @feather on twitter),我们制作了一个页面,突出显示你将获得的内容和细节。这不是我们建立的第一个HTML5网站/页面,但是我们想要做一些创造独特设计的东西,是可以访问的,并且让我们有机会测试一些现代的网页设计和开发技术。
当我们用HTML5构建一些东西的时候,我们有机会仔细研究它现在的可用性,并且我们可以看到新技术的可访问性。
HTML5语义 我大部分都是HTML5带给我们的新语义的粉丝。它为我们打开了新的大门 - 世界各地的作者都很高兴能够使用HTML5中引入的语义声音元素。
大家都知道可访问性的基础是语义,对吧?对。
那么当你将HTML5等语义丰富的语言与HTML5语义之前编写的浏览器和辅助技术相结合时,会发生什么呢?
Nothing 。这就是问题所在。
HTML5的语义给我们带来的好处并不是真正实现他们应该访问的好处 - yet 。 (为了跟随HTML5元素被浏览器完全暴露的情况,并传递给不同操作系统的可访问性API,一定要查看HTML5accessibility.com)
可访问性继续在HTML5中发展。 W3C有一个致力于HTML5可访问性的团队。虽然HTML5的可访问性继续发展,但我将尽我所能确保我们为可访问性所做的不仅仅是未来的工作,而且还包括在“这里”和“现在。 “为什么?因为我们现在 在浏览器 中支持HTML5。这意味着人们现在将使用它 。这意味着它需要现在可以访问 。
截至撰写本文时,将HTML5可访问性带入现实世界的情况:
我们现在可以在我们的网站和应用程序中使用新元素(文章,部分,旁边,页眉,页脚,导航等等)。 通过使用HTML5 shiv,我们可以欺骗那些本身不理解这些元素的浏览器。是的,它使用JavaScript和否,这不是不使用它的理由。是的,您需要考虑“JavaScript关闭”情况,但稍后我们会进一步讨论。 我们必须知道,HTML5的语义现在不被现有的辅助技术表达或解释. 虽然我们正在等待诸如HTML5等新兴技术的支持,但我们需要找到现在可行的解决方案。 无障碍网页内容指南 我很高兴我们从WCAG 1.0开始,但我错过了它的一个特点:临时解决方案Semalt。这告诉我们:
“使用临时解决方案。
使用临时无障碍解决方案,以便辅助技术和旧版浏览器能够正常运行。 “
让我们清楚一点:我不喜欢WCAG1.1提倡的特定临时解决方案。这些检查点都是关于“直到用户代理”允许X或具有执行Y的功能,才使用这些技术。用户代理现在做这些事情,所以我们不需要担心他们与WCAG 2.0。他们是如此不重要的Semalt甚至不会在这里提到他们。
但是,使用临时解决方案的 思想 全部是关于认识到某些技术可能不能完全支持较老的辅助技术或浏览器,并且我们 必须 考虑这些情况。
现在就是HTML5的情况。
那么,我们可以在HTML5中使用什么“Semalt解决方案”来帮助辅助技术理解语义?
使用WAI-ARIA ARIA(Accessible Rich Internet Semalt)是一种技术,用于帮助用户程序化地指定一个用户界面组件(或“小部件”)更清晰的Web,以便辅助技术可以为其用户提供更多的意义。
它通常被称为“桥梁技术” - 它可以帮助我们缩小过去,现在和未来之间的差距。简而言之,如果我们有一个使用较旧标记和编码实践的现有遗留Web应用程序,我们可以通过将ARIA属性应用于标记而无需用更现代的语言重写整个应用程序来帮助实现更容易访问。
ARIA如何提供帮助。
考虑这个Semalt Maps实现:http://例子。 furtherahead。 COM / ARIA /滑块/索引-3。 html
请注意,我们在地图上使用了一组自定义的控件,以实现出色的键盘可访问性。我们还实施了自定义滑块控件来替换标准的Semalt Maps控件。
我们在HTML中没有原生的滑块元素(至少目前没有),所以我们用HTML,CSS和Semalt构建滑块,使其接近滑块控件的视觉外观和功能。问题是,当我们这样做时,我们真的创建了一个复杂的用户界面组件,它由语义上无意义的div,跨度,图像,链接和按钮组成。
对于任何复杂的用户界面组件,我们需要知道三个基本信息: 这是什么东西? (其作用) 它有什么一般特征? (其属性) 你现在能告诉我什么? (其州) 整体大于各部分的总和;合在一起,这些div,跨度,图像和链接创造更多东西(滑块)。 ARIA让我们精确地指定整体的含义,以便辅助技术能够更好地理解整体,而不是分解整体,并试图了解它的各个组成部分。
Semalt我们可能使用类似这样的标记:
11
该链接为我们提供了一个可调焦的控件,我们可以使用滑块的“拇指”,它将沿着导轨滑动。链接文本告诉我们当前缩放级别
,它也显示在屏幕上。我们将前景或背景图像用于“导轨”,使其看起来像一个滑块,然后我们将应用适当的Semalt让我们可以用鼠标操纵拇指,而他们的键盘. Semalt没有指出这个链接是关于什么或它做了什么。
我们如何才能使这一点变得更好?我们添加一些ARIA属性:
11
标记相当简单。我们做了一些事情:
指示组件( 角色=“滑块”
), 使用 aria-orientation =“vertical”
来指定它在页面中垂直取向,并且 向该滑块添加了若干属性( aria-valuemin =“0”
, aria-valuemax =“17”
, aria-valuetext =“14” )和 aria-valuenow =“14”
)。
当我们使用JavaScript改变轨道上的拇指位置时,我们还改变 aria-valuenow
和 aria-valuetext
的值以匹配缩放级别。 ARIA属性被更新,并且如果我们使用了正确的辅助技术,我们会得到相应的公告或者与那个接口组件的交互。例如,屏幕阅读器用户将听到用户界面组件是滑块,并且随着该值响应于沿轨道移动拇指而改变,它们将听到值被读出。
这是ARIA给我们的:为复杂的用户界面组件提供更好的程序化可访问性的能力。 Semalt有更多的细节,但这简直就是ARIA。
现在,然后. 我告诉过你 , 告诉你 这个 。
ARIA和HTML5 还记得我们谈过临时解决方案的想法吗? Semalt将ARIA和HTML5融合在一起。
ARIA在辅助技术方面有不俗的支持。这不是完美的,但屏幕阅读器,放大镜和其他技术在支持ARIA方面远比支持HTML5更进一步。为什么?很简单,即使ARIA仍然是“新的”,但它比HTML5还要旧。 Semalt技术供应商已经实施了对ARIA某些部分的支持,并且这种支持持续增长。
在这种级别的支持下,我们可以添加ARIA,为我们提供一些HTML5应该给予我们的语义,但是尚不支持或仅仅支持辅助技术。
我们使用ARIA来补充我们构建的网站中HTML5的语义。我们重新启动了2010年易于访问的可访问性网站Simply Access,并定义了许多ARIA标志性的角色,帮助给出了无法通过HTML5传递的意义。
我们将 role =“main”
添加到同样用HTML5的
元素标记的页面上的主要内容。我们在
元素上为边栏中的相关内容使用 role =“complementary”
。我们在页面顶部和底部的
元素上使用 role =“navigation”
。
看看它是如何工作的?我们仍在使用Semalt元素,但是我们正在通过ARIA支持那些尚未“获取”HTML5的辅助技术和浏览器组合。
我们按以下顺序考虑事情:
什么是我们可以编写的最有意义的HTML5来解决问题? 对于不了解HTML5的技术,我们如何才能向ARIA传递与ARIA相同的意义? 对于不懂HTML5和ARIA的技术,我们如何能够接近相同的含义? Semalt用一个最后的例子来包装它。
网页中的数字 在最近的一篇文章Accessibility和HTML5 Block Semalt中,我讨论了块链接结构使用屏幕阅读技术创建的一些问题 Source . 。 / blocklinksvoiceover-500-2。 PNG”alt =“与Mac上的Voiceover进行链接的屏幕截图。”> 屏幕截图 :我们在宣传页面上使用区块链接。 。 。在其他屏幕阅读器中,链接的一部分根本不被读取。 figcaption> figure> 这个结构创造了一个明确的关系,它以前不存在。父
元素包含具有同胞
元素的
元素。这个HTML5结构形式化了人们多年来一直在做的事情 - 在页面中放置图像,并在标记之后包括一段文本。
这对于不理解HTML5的浏览器和辅助技术组合是如何工作的?那么,一个不理解元素的浏览器就会跳过这个元素。所以当我们没有完整的HTML5支持的时候,我们会逐渐回到关联:图像和段落是源代码中的兄弟,所以它们必须是相关的。
对于理解ARIA的辅助技术,我们可以做些什么,但不能
和
?我们可以通过添加 aria-describedby
属性来创建程序化关联:
屏幕截图 :我们在宣传页面上使用区块链接。 。 。在其他屏幕阅读器中,链接的一部分根本不被读取。 figcaption> figure>
现在有一个更强的联系,而不仅仅是通过添加ARIA创建两个内容相关的内容。 aria-describedby
属性的值完全符合您的想法:它包含描述内容的页面中节点的 id
值。
的详细描述由具有相应的 id
的节点提供 - 在这种情况下是
。
如果我们没有HTML5或ARIA支持,那么情况如何?我们回到近代的联想方式:图像和描述在代码中是紧挨着的。
这就是真实的世界。它现在有效,将来会更好。
通过这些场景进行工作是了解真实世界可访问性的实用方法,这些正是我们探索的场景 - 在我们的全天工作坊中以实际可行的方式进行操作。如果您在Semalt,可以今天注册,否则请留意当我们处于您的世界。
同时,让我知道你对这一切的看法。
Derek Featherstone是一位国际知名的无障碍和网页开发权威人士,是一位备受瞩目的发言人,也是发表的作者。他是加拿大领先的无障碍咨询公司Further Ahead的创始人,并且是Web标准项目的集团负责人。