`
xiaozhi7616
  • 浏览: 196652 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Tab键获得页面第一焦点 - 可访问性问题

    博客分类:
  • CSS
阅读更多

如果有视力障碍的用户访问系统时,通常是使用某些屏幕读取软件来读页面中的内容(如 Screen Reader),屏幕读取软件通过页面中的某些标志性标记来读出相对应的内容,这类用户通常是使用键盘来进行操作的而非鼠标。

 

在项目中遇到了一个比较奇怪的问题,现象是这样,在使用键盘控制进入页面的时候,焦点应该停留在页面第一个能够获得焦点的元素上(<a>, <input>等等都是可以获得焦点的元素,而<div><span>则不能够获得焦点),但是因为我们的View层使用了经过封装后的JSF,JSF在实现界面展示的时候内部做了许多工作,因此导致在我们一进入页面的时候,焦点很可能落在JSF自己生成的元素上面,而我们却不得而知,导致焦点定位不准确,屏幕读取软件读到的内容不是正常情况下我们想得到的。

 

(当然这种情况在比较复杂的页面才有可能发生,不是所有的页面都会出现这个问题,而且问题发生的前提也不仅仅是使用JSF控件才会出现,使用其他的一些控件或者JavaScript类库同样有可能出现上述情况)

 

整理了一下解决这个问题的方法,以供遇到同样问题的朋友参考,这里仅使用一个简单的例子来说明问题,至于重现Tab键进入页面的时候要跳很多次的现象,这个工作就不做了,也没有必要。我准备了一个这样的界面:

 

给页面加上第一个元素,实际上很简单,在<body>标签后面加上一组标签,要紧接着<body>。

<body>
		<div class="first">
			<a href="#content" accesskey="2">Go Content</a>
		</div>

 

接下来定义它的CSS样式,这一步是最关键的

.first a{
	position:absolute;  /* 相对定位 */
	overflow:hidden;	/* 隐藏溢出部分 */
	width:0;			
	height:0;				
}

.first a:active, .first a:focus{

	position:absolute;
	overflow:visible;  /* 显示出部分 */
	width:65px;
	height:auto;
	
	/* 以下是定义显示样式 */
	padding:10px;
	top:5px;
	left:5px;
	z-index:100;
	background-color:yellow;
	border:2px dotted red;
	color:red;
	font-weight:bold;
}
   
  • 把文字 Go Content 放在<a>标签中构成链接,链接指向 ID 为 “content” 的页面元素。
  • accessKey,为页面元素定义accessKey,在IE中访问的时候可以使用 Alt 键 加上定义的 数字键 组合起来就可以直接访问到该页面元素。
  • 定义它的样式长宽均为0,超出内容部分隐藏(overflow:hidden),实际上标签<a>中所有的内容都溢出了,都会被隐藏掉,也就是正常状态下在页面中根本就看不到这个链接,这样的目的是正常显示的时候该链接并不会影响所在页面本身的内容,不会给用户造成内容上混淆。
  • 定义链接在激活和得到焦点时的样式,超出<a>标签内容的部分会被显示(overflow:visible),并指定显示部分的样式。

来看一下效果,当进入页面的时候,使用Tab键(或者在IE中使用 Alt+2 组合键)进入页面访问到页面 内容部分 第一个可获得焦点的元素就可以显示出来刚才定义的这个部分(仅是用Tab键访问的情况,鼠标操作是没有效果的)

 

IE中的效果:

 

FireFox中的效果:

 

看到在这两个主流的浏览器中显示的效果基本是一致的,但是还一个小小的区别,在IE中第一个获得焦点的页面元素是之前定义的链接“Go Content”,而在FireFox中,第一个获得焦点的页面元素是body,第二个才是“Go Content”,但是这并没有什么影响,我们要的效果已经达到了。

 

这样使用屏幕读取软件读到的页面内容就是从链接"Go Content"开始,可以直接跳到内容部分,绕过了其他控件生成的页面元素,使整个页面内容保持了一致性。

 

 

最后附上两个文件的代码,有兴趣的朋友可以试一下:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
		<link rel="stylesheet" type="text/css" href="style.css">
		<title>Accessibility</title>
	</head>
	<body>
		<div class="first">
			<a href="#content" accesskey="2">Go Content</a>
		</div>
		<div id="header">
			<h1>Accessibility</h1>
		</div>
		<div id="content">
			<p>Accessibility is a general term used to describe the degree to which a product (e.g., device, service, environment) is accessible by as many people as possible. Accessibility can be viewed as the "ability to access" the functionality, and possible benefit, of some system or entity. Accessibility is often used to focus on people with disabilities and their right of access to entities, often through use of assistive technology. Several definitions of accessibility refer directly to access-based individual rights laws and regulations. Products or services designed to meet these regulations are often termed Easy Access or Accessible.</p>
		</div>
		<div id="footer">
			<p>Accessibility</p>
		</div>
	</body>
</html>
 
body {background-color:white; margin: 20px; font-family:Arial; font-size: 11px;}
a{text-decoration:none;}
a:visited {color:black;}
h1{color: skyblue; font-size:3em; }
p{font-size:1.5em; line-height:1.2;	word-spacing: 5px;}

.first a{
	position:absolute;  /* 相对定位 */
	overflow:hidden;	/* 隐藏溢出部分 */
	width:0;			
	height:0;				
}

.first a:active, .first a:focus{

	position:absolute;
	overflow:visible;  /* 显示出部分 */
	width:65px;
	height:auto;
	
	/* 以下是定义显示样式 */
	padding:10px;
	top:5px;
	left:5px;
	z-index:100;
	background-color:yellow;
	border:2px dotted red;
	color:red;
	font-weight:bold;
}
 

 

 

 

 

 

 

 

  • 大小: 46.4 KB
  • 大小: 29.3 KB
  • 大小: 24.1 KB
1
0
分享到:
评论
1 楼 mic_scofield 2010-04-26  
虽然不是我需要找的内容,没有多看但是可以学习下

相关推荐

    CSS+静态TAB控件

    - **默认显示内容**:通过设置`.tab-content`的`display`属性为`none`,然后为第一个内容区设置`display:block`,可以隐藏除第一个之外的所有内容区。 - **布局与对齐**:利用`flexbox`或`grid`布局,可以轻松调整...

    把一个tab控件加入到一个form或对话框中.rar_Tabú_tab控件

    - 可访问性:确保控件对辅助技术友好,如屏幕阅读器,以便有特殊需求的用户能顺利使用。 总的来说,将Tab控件集成到Windows应用程序中可以极大地提高用户体验,通过合理的布局和功能设计,可以有效地组织和展示大量...

    winform里textBox无法获得焦点的解决方案

    // 设置textBox为第一个Tab索引 this.txtReceiveMoney.TabIndex = 1; ``` 以上代码展示了如何调整textBox的属性,以确保其可见且可用,并设置了合适的Tab索引。 ### 四、总结 在WinForm开发过程中,确保textBox...

    css+div 制作TAB

    同时,初始状态下,除第一个TAB内容外,其他内容区域应设为隐藏。 3. **添加交互效果**:利用CSS伪类(`:hover`, `:active`, `:focus`)为TAB按钮添加鼠标悬停、点击和焦点状态的效果。这将增强用户体验。 4. **...

    JavaScript 实现自定义Tab

    5. **可访问性**:考虑网页的可访问性,为Tab组件添加键盘导航支持,例如使用`Tab`键进行焦点切换,`Enter`键激活选中项。 6. **响应式设计**:在移动设备上,可能需要调整Tab的布局和交互方式,以适应不同的屏幕...

    web页面如何写测试用例

    - **目标**: 确认页面加载时默认显示第一页。 - **测试步骤**: - 模拟不同的数据量,验证翻页逻辑是否正确。 **2. 上一页与下一页按钮** - **目标**: 确保“上一页”和“下一页”按钮在合适的时候禁用。 - **测试...

    电脑上的每个键的作用很有用的

    68. 右箭头 - 展开或选择第一个子文件夹:如果当前项已折叠,则展开;如果未折叠,则选择第一个子文件夹。 69. Windows键 - 显示或隐藏开始菜单。 70. Windows键+F1 - 获取帮助:打开系统帮助。 71. Windows键+D ...

    HTML 登陆页面6个 精挑细选

    9. **可访问性**:遵循WCAG(Web Content Accessibility Guidelines)标准,确保登录页面对残障人士友好,例如,为表单元素添加`aria-label`属性,提供语音导航支持。 10. **最佳实践**:使用语义化HTML,提高页面...

    键盘上所有快捷键 键盘上所有快捷键

    - **向右键**: 当前所选项处于折叠状态时展开该项,或选定第一个子文件夹 — 展开文件夹或选择第一个子文件夹。 #### 六、自然键盘快捷键 - **【窗口】**: 显示或隐藏“开始”菜单 — 显示或隐藏开始菜单。 - **...

    常用组合键

    - **组合键**: Shift + Tab - **功能**: 当需要在打开的应用程序之间进行快速切换时,可以使用此组合键。 **2. 关闭当前窗口或页面** - **组合键**: ESC - **功能**: 快速关闭当前活动窗口或浏览器中的标签页。 ##...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -Button控件将不再自动拥有display:inline属性,如果希望两个按钮在一行显示,请为第一个按钮设置CssStyle="float:left;"属性。 -修正了弹出菜单的位置在Firefox下不正确的BUG(feedback:eroach)。 -为TriggerBox...

    win8键盘快捷键大全.docx

    1. Windows键: - Win+C:调出应用 Charm 菜单,包含设置、共享、搜索等功能。 - Win+D:最小化所有窗口,再次按下恢复显示。 - Win+E:打开“我的电脑”或资源管理器。 - Win+F:打开查找面板,用于搜索文件和...

    前端开源库-pseudo-classes.zip

    - `:focus`: 当元素获得键盘焦点时,如通过Tab键切换或者JavaScript操作。 - `:link`: 未被访问过的超链接。 - `:visited`: 已经被访问过的超链接。 - `:first-child`: 选择父元素的第一个子元素。 - `:last-...

    powerbuilder

    参数printjobnumber:用PrintOpen()函数打开的打印作业号fontnumber:指定赋给当前定义字体的编号,有效值在1到8之间 facename:string类型,指定字体名称,该字体应该是你的打印机支持的字体,比如“宋体”height:...

    ExtAspNet_v2.3.2_dll

    -修正extjs最新版本(v3.2.2)中的一个bug,如果下拉列表中存在两个相同的Text,则SelectedValue返回值永远是第一个Text的值(feedback:ben.zhou)。 -应用补丁#6593, #6621(feedback:vbelyaev)。 +修正IE7下Grid分页...

    全键盘操作快捷键大全

    - **Ctrl+1,2,3...**:切换到从左边数起的第1,2,3...个标签页,方便多标签管理。 - **Ctrl+A**:全选当前页面内容,便于复制或编辑。 - **Ctrl+C**:复制当前选中内容,常用于网页上的文本或链接。 - **Ctrl+D**:...

    accessible-modal:可访问的模态组件

    在IT行业中,尤其是在Web开发领域,可访问性(Accessibility,简称a11y)是一个非常重要的概念。可访问性设计确保了网站、应用程序或组件能够被所有用户,包括那些有特殊需求的人,如视力障碍、听力障碍或者动作不便...

    windows7系统的70个小技巧

    - 按下`Win + 1`键打开最近使用的第一个应用程序。 #### 30. 查看系统诊断信息 - **技巧介绍**:获取关于硬件和软件的信息,帮助解决系统问题。 - **操作步骤**: - 打开“控制面板”中的“系统和安全”选项。 ...

    易语言程序免安装版下载

    易语言5.0测试版1发布于2009/12/28,是易语言5.0静态编译版第一个公开测试版本 ******************************************************************************** ** 以下是易语言4.x及以前版本的升级信息 ...

Global site tag (gtag.js) - Google Analytics