事情的缘由是,前两个礼拜打了个“飞的”去北京玩,见了一位在百度做前端的朋友。过去一年以来,这家伙就不停的在鼓动我去他们那个邪恶的公司。当然,见面之后就不能再当面称呼人家是邪恶的公司啦,所以我就找了个理由,说你们那个“百度盲道”做得太垃圾了。他当然就很虚心的问我为什么啦。所以我也只能很心虚的糊弄了几句,说回上海之后详细告诉他。
回来之后,就马上很虚心的翻出一本老旧的电子书——《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)
这一条是说要加 <link rel=”home” title=”Home” href=”http://url/of/home/page” /> 这个。这个其实我知道。但是貌似对于页面里这么多链接,要都加上rel和rev属性,有点难度。
4. 先呈现主要内容(Presenting your main content first)
好啦,这就是一条典型的“指望优秀的CSS”的可访问性原则啦。把<div class=”main”>放在<div class=”side”>的前面,其实挺考验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节。然后可以再去看看那个可恶的“百度盲道”,我接下来会专门用一篇来诅咒这个忽悠障碍人士的无良黑心产品。
chumsdock: 2009-6-23 1:22 am
呈现主要内容,同时宽度适应的题无非就是用负的margin去绕嘛…
我觉得这主要还是一个经验的问题,就像背景图替换用text-indent,css-sprite这些本来非常tricky,可一旦用的人多了也就不神秘了。我感觉css 2.0的trick已经差不多给榨光了。
小麦: 2009-6-23 8:36 am
@chumsdock: 呃,好吧,我收回我觉得这道题目“太刁难”的话。。
我其实很赞同你的话。。。
velo: 2009-6-23 9:53 am
一般都用不到
fireyy: 2009-6-23 10:18 am
“也要把Ajax代码片段放在href里” , 是把真实链接放到href里吧
小麦: 2009-6-23 9:29 pm
@fireyy: 呃,我的错的。“把Ajax代码片段的地址放到href里”。
kuku: 2009-6-24 12:22 pm
b) title到底应该是“小标题”在前呢,还是“大标题”在前?
小标题在前事为了搜索引擎优化,因为搜索引擎可能把标题截短!
vincent: 2009-6-29 5:20 pm
#4答案
#main{
float:left; width:100%;
}
#main .content{
margin-right:300px; background-color:#0F3
}
#side{
float:left; width:300px; margin-left:-300px; background-color:#0C9
}
fdsfdsfsd
fsdfsdfdsf
应该不算难。供大家参考。
小麦: 2009-6-29 9:17 pm
@vincent: 如果要求侧栏在左侧呢?
小麦的自习教室 » 可恶的盲道: 2009-6-29 10:54 pm
[...] 具体的优化措施,可以参看我之前写的“可访问性——前端的使命(一)、可访问性——前端的使命(二)、可访问性——前端的使命(三)”。 [...]
vincent: 2009-6-30 8:49 am
左侧也很简单实现。如下
#main{
float:left; width:100%;
}
#main .content{
margin-left:300px; background-color:#0F3
}
#side{
float:left; width:300px; margin-left:-100%; background-color:#0C9
}
小麦: 2009-6-30 4:44 pm
@vincent: 看你写“#0F3”就知道还差点火候,再多虚心修炼一下吧。
vincent: 2009-6-30 9:53 pm
#0f3有什么问题?影响reflow 速度?
还请多指教.呵呵.
benhuoer: 2009-7-1 8:11 pm
估计小麦觉得那颜色没有设计感。。。。
小麦: 2009-7-2 9:44 am
没,那不重要。
重要的是,答案是不对的。
skyweo: 2009-7-2 2:46 pm
小麦:请教一下,这种方式是否合适——
skyweo: 2009-7-2 2:48 pm
刚刚评论失败,现补上答案——
#main { margin:0 0 0 130px; }
#side{ width:130px; position:absolute; left:0; top:0; }
vincent: 2009-7-2 4:05 pm
#小麦:
答案不对?不会吧。能不能给出你的答案让大家学习下?
若比邻: 2009-11-2 5:04 pm
三列如何让左右栏固定宽度,主栏宽度自适应,同时主栏先显示,且三列高度相同,小麦有好的解决方法吗,希望指点一下
yiminghe: 2009-11-20 12:58 am
那本电子书真不错,原来还真有这种书 !
@若比邻 你的要求很经典哦:
http://www.alistapart.com/articles/holygrail
虽然还有小问题,但是够用了