网页的可访问性,似乎只能由前端来重视并实现。这点挺可悲,作为可用性的一部分——可访问性,居然只能由技术人员来掌控,这是我不愿意看到的。但反过来,这给前端开发工程师们新增加了一个责任,同时为如何区分优秀的前端增加了一个指标. 事情的缘由是,前两个礼拜打了个“飞的”去北京玩,见了一位在百度做前端的朋友。过去一年以来,这家伙就不停的在鼓动我去他们那个邪恶的公司。当然,见面之后就不能再当面称呼人家是邪恶的公司啦,所以我就找了个理由,说你们那个“百度盲道”做得太垃圾了。他当然就很虚心的问我为什么啦。所以我也只能很心虚的糊弄了几句,说回上海之后详细告诉他。 事情的缘由是,前两个礼拜打了个“飞的”去北京玩,见了一位在百度做前端的朋友。过去一年以来,这家伙就不停的在鼓动我去他们那个邪恶的公司。当然,见面之后就不能再当面称呼人家是邪恶的公司啦,所以我就找了个理由,说你们那个“百度盲道”做得太垃圾了。他当然就很虚心的问我为什么啦。所以我也只能很心虚的糊弄了几句,说回上海之后详细告诉他。 回来之后,就马上很虚心的翻出一本老旧的电子书——《Dive Into Accessibility》,认认真真的看了一遍。 然后惊奇的发现: 1. 虽然我没看过这本书,但里面讲的大部分,我平日里都有遵守。果然,坚持好习惯是值得表扬的。 2. 网页的可访问性,似乎只能由前端来重视并实现。这点挺可悲,作为可用性的一部分——可访问性,居然只能由技术人员来掌控,这是我不愿意看到的。但反过来,这给前端开发工程师们新增加了一个责任,同时为如何区分优秀的前端增加了一个指标。 好吧,下面我把这本Dive Into Accessibility的内容作一个摘要,看看对于可访问性,应该要注意哪些问题: 1. 标明语言(Identifying your language) 这一条的意思是,加上lang属性,如。如果其中有一段是其他的语言,就在那一段的标签上加lang属性。这一条我做得不好,以后记得。 2. 构建有意义的页面标题(Constructing meaningful page titles) 有几点值得一提: a) 做页面时,千万不要忘记写title。我见过好多页面的title是“Untitled Document”或“新建页面”,丢脸啊~ b) title到底应该是“小标题”在前呢,还是“大标题”在前?现在的惯例似乎都是“小标题”在前,比如“影音娱乐首页_新浪网”。但我个人倒是有个看法,或许大标题在前比较好。这样当我把“新浪网_影音娱乐首页”、“新浪网_新闻中心首页”放入收藏夹时,它们会因为音序排序而呆在一起,而不是散乱在各处。当然这个也不一定,仅供参考。 c) 对于英文的标题,一定要注意尽量不要把The放在title的前面,否则你的网页在收藏夹里就会被排在T开头了。 3. 提供额外的导航辅助(Providing additional navigation aids) 这一条是说要加 这个。这个其实我知道。但是貌似对于页面里这么多链接,要都加上rel和rev属性,有点难度。 4. 先呈现主要内容(Presenting your main content first) 好啦,这就是一条典型的“指望优秀的CSS”的可访问性原则啦。把
放在
的前面,其实挺考验CSS技术的。一道著名的题目是:如何让侧栏固定宽度,主栏宽度自适应,同时主栏的HTML要在侧栏 的前面。我很想放在我的面试题里,可又觉得是不是太刁难了。但是,无论如何,这道题目很重要! 5. 用于跳过导航栏的链接(Skipping over navigation links) 很重要!这个在骨灰级网页标准教程《网站重构》里就提到了。只是有一点我比较怀疑,如果把skip link设为display:none,难道不怕被阅读器也忽略掉么? 6. 安全的使用颜色(Using color safely) 这条其实讲了几个要点: a) 颜色对比要够,否则眼神不好的人看起来费劲 b) 链接的颜色,好用蓝色(像我比较喜欢用#09c) c) 链接好有下划线 7. 用“真链接”(Using real links) 意思是,即便这个链接是用于触发Ajax,也要把Ajax代码片段的URL放在href里,好让搜索引擎以及阅读器等等能够爬到。关于此条,请参看土豆网首页的“挖土豆”一块。 8. 给链接加“title”属性(Adding titles to links) 这个还用说么,可用性两大重点:a的title和img的alt。 呼~~~先结束这第一回合吧。如果你对可用性感兴趣,可以详细的读一下这本“Dive Into Accessibility”,尤其是前5节。然后可以再去看看那个可恶的“百度盲道”,我接下来会专门用一篇来诅咒这个忽悠障碍人士的无良黑心产品。
网页的可访问性,似乎只能由前端来重视并实现。这点挺可悲,作为可用性的一部分——可访问性,居然只能由技术人员来掌控,这是我不愿意看到的。但反过来,这给前端开发工程师们新增加了一个责任,同时为如何区分优秀的前端增加了一个指标. 9. 定义键盘快捷键(Defining keyboard shortcuts) 意思就是定义accesskey属性。这个好说。有个关键是如何在浏览器里使用。IE里是“alt+”,并且只是将焦点移过去,要点击需要再按 enter;Firefox是“shift+alt+”,按下之后直接触发点击事件。Opera和Chrome还有Safari,我都没试出来,有知情者 请告知。 感谢aoao提供:Safari 4/mac control+alt+key | /win alt+key Opera Shift+Esc 选key Chrome 3 alt+key 除了accesskey,其实还有一个更重要的:tabindex。有时候需要改变默认的tabindex顺序,以期得到更便利的体验。举个例子,如下格式的登陆框: 用户名 记住我 密码 忘记密码 按照默认的顺序,按下tab键,焦点会依次经过“用户名”、“记住我”、“密码”。但是似乎把“记住我”放在“密码”之后更方便,毕竟不是所有的人 都需要使用“记住我”这个按钮,尤其是多次使用这个登陆框的人,他很显然是不喜欢“记住我”。所以应该用tabindex指定如下的顺序:“用户名”、“ 密码”、“记住我”。 10. 不要打开新窗口(Not opening new windows) 文中的意思是,这样会破坏浏览器的“history”记录,从而使浏览器“后退键”无效。总算知道外国网站很少有新开窗口的缘故了吧,也总算知道为啥 XHTML标准要把a标签的target属性取消的缘故了吧。但这个似乎不符合中国用户的习惯,还值得商讨。不过有一些变通的方式可以考虑: a) 页面上给一个选框,选择之后就自动把a标签里的target属性移除,使得所有的链接都在本页打开。 b) 新开窗口并不是到”_blank”,而是到一个指定名字的窗口,比如“new”。这样所有新开的页面都会到同一个窗口里打开,至少在这个窗口里,还是可以使用浏览器的“后退键”的。(提一下,土豆网的视频都是这样的,开到同一个新窗口里)。 11.定义首字母缩略字(Defining acronyms) 先说明一下,其实作者这里对acronym这个词理解不正确。acronym是指单词的首字母合起来成为一个新的可读的单词,这个单词未必是所有字母都大写的,比如Nato(北大西洋公约组织)。所以HTML或是CSS算不上acronym,而 DOS、BASIC这种才算。像HTML或CSS这种,应该叫abbreviation,与其对应的是标签,但很遗憾,这个标签IE6上无效。 12. 给你的日历加上抬头(Giving your calendar a real caption) 13. 使用真正的表头(Using real table headers) 14. 为表格提供摘要(Providing a summary for tables) 把这三条合在一起说,就是要正确使用表格。其实表格的使用远比这三条更多,建议大家仔细阅读HTML权威指南。
或。盼知情者告知。 17. 为图片提供替换文本(Providing text equivalents for images) 18. 为图片映射提供替换文本(Providing text equivalents for image maps) 这两条同15。 这里我只是想说说两个题外话: a) 到目前这个年代,