这样去写你的 HTML

昨天在 twitter 上说,怎么忍心把页面写得这么难用?是的,这个世界还有一群人等着我们创建出来的东西,可以让他们的生活能过得更容易呢。比如那些需要读屏软件的用户。作为一个前端,我们又怎么会忍心呢。之前就一直想写这样的一篇文章,分享一下如何去创造一个可访问性更好的页面。今天的计划里有一条把 HTML Tag 和 WCAG标准结合起来。我推荐你这样去写你的 HTML,让某些人的生活可以更容易。

今天想分享的是如何去使用我们的 HTML Tag, 把 WCAG 的标准和语义网的目标进行代码上的体现:

1. 文档声明:<!Doctype>

其实这跟 WCAG 根本上连不上什么直接关系,但为了一个兼容性更好,特别是向后兼容的页面,我推荐你这样写:


  
  
  1. <!Doctype html>

2. 链接:<a>

互联网的联几乎可以说是用 <a> 来实现的,作为一个页面最常见的标签。我们应该如何对待呢?

  1. 为关键链接添加 accesskey
  2. 除非万不得已,不要去掉 focus 时虚线框

  
  
  1. <a href="" title="" accesskey="M" rel="" hidefocus>Link</a>

3. 缩写: <abbr>

对于用 HTML Tag 的正确使用,也是非常重要的,这有利于读屏软件使用者对于页面结构的理解。特别是在 H1,H2,H3 等这些标签的使用,滥用非常容易造成结构费解。当然,使用一般的标签,再利用 CSS 来使视觉上形成对比这也是常人能辨识的。但读屏软件用户呢。当然,这里只是顺带提起需要注意页面标签的使用方法,而 abbr 最重要的应该是应该添加一个 title 属性对缩写进行描述。比如:


  
  
  1. <abbr title="Web Developer" >WD</abbr>

4. 大段引用: <blockquote>,一般引用: <cite>

 有大段引用的时候,使用 <blockquote>,而行内引用则使用 <cite>,让你的结构更加易读:


  
  
  1. <blockquote>
  2. 之前就一直想写这样的一篇文章,分享一下如何去创造一个可访问性更好的页面。今天的计划里有一条把 HTML Tag 和 WCAG标准结合起来。我推荐你这样去写你的 HTML,让某些人的生活可以更容易。
  3. </blockquote>
  4. <p>某A给我印象最深刻的一句话是,<cite>“做前端要有爱。不要动不动就有朩有地对各种人使用咆哮体”</cite>。</p>

5. 删除:<del>

在纸上写东西不能像在计算机上写东西一样,可以用撤销键可以按,但当我们想要强调某些东西是被删除的怎么办?那就是使用 <del> 标签了。比如这样:


  
  
  1. <del>HTML上表示强调时,请使用 &lt;b&gt; 标签</del>
  2. HTML上表示强调时,请使用 &lt;strong&gt; 标签

效果是这样的:

HTML上表示强调时,请使用 <b> 标签
HTML上表示强调时,请使用 <strong> 标签

6. 定义列表:<dl>

去年带着新人做支付宝前端博客的时候,他们给我印象最深刻的是很喜欢用 <dl>。当时在想,这些同学挺不错的,对语义化的理解还不错。我们还是比较少用到定义列表的。而是使用一般的 <ul> <ol> 这两个。<dl> 也是应该慎用的,最好只使用在某些有“定义”意义的条目,如 w3school 的这个例子,对咖啡和牛奶的定义:


  
  
  1. <dl>
  2. <dt>Coffee</dt>
  3. <dd>- black hot drink</dd>
  4. <dt>Milk</dt>
  5. <dd>- white cold drink</dd>
  6. </dl>

7. 无序/有序列表 <ul>/<ol>

列表,这个对于每个前端来说,都熟悉不过了。因为结构可以非常灵活地进行应用,在导航、列表、Tab 等,都经常要要用到。这个就无须多说了。但有一点还是需要明白的,不要相信什么 <ul>/<ol> 是 <table> 的替代品。在我们常用的 HTML Tags 中,每个标签都有自己的作用,谁都不是谁的替代品。


  
  
  1. <ol>
  2. <li>Coffee</li>
  3. <li>Tea</li>
  4. <li>Milk</li>
  5. </ol>

8. 表格: <table>

如果是一个表格,那就,就不要用段落来替代,更不要用列表。除非万不得已,并且他们是可以转换的。另外,表格中还有一些需要注意的点:

  • 给 <table> 添加 summary 属性,有些表格非常大,并不需要去读完整个
  • 添加 <tbody>,如果我没记错,如果没添加的话,浏览器会自动为你添加
  • 必要时使用 <col> <colgroup> 来控制表示的栏

  
  
  1. <table summary="sofish's blog status">
  2. <thead>
  3. <tr>
  4. <th>DATE</th>
  5. <th>IP</th>
  6. <th>PV</th>
  7. </tr>
  8. </thead>
  9. <tbody>
  10. <tr>
  11. <td>2011.3.11</td>
  12. <td>3000</td>
  13. <td>8000</td>
  14. </tr>
  15. </tbody>
  16. </table>

9. 格式化片段 <code>/<pre>

<code> 是指 computer code text, 而 <pre> 是指 preformatted text。<pre> 的范围更广,并且是块状元素,可能被使用来格式化各种文本,特别是代码。使用没有需要特别注意的,主要是语义上的正确使用,比如不要用 <pre> 来代替一般的 <p>。


  
  
  1. <code>text-align:center</code>
  2. <pre>
  3. { ( 1 * 102 ) + ( 9 * 101 ) + ( 3 * 100 ) }
  4. </pre>

10. 换行: <br>

在现代网页中,使用 <br> 的情况是非常少的。网页中的留白,一般都是使用 CSS 的 padding 和 margin 来实现。这样更精准,并用更容易控制。现在推荐的用法是,使用到一般的段落 <p> 中做简单的换行,而不是用来控制页面留白。


  
  
  1. <p>我是一个段落。<br />
  2. 诗歌都会用换行的。
  3. </p>

11. 分割线: <hr>

<hr> 具有非常好的语义作用。但他的视觉效果很难控制。之前就写过这样的文章关于<hr />在各浏览器中的问题。一般也都很少用。如果专门为读屏软件使用者提供单独页面的话,或许 <hr> 会大有用处。


  
  
  1. <h3>标题一</h3>
  2. <p>Lorem Ipsum is ...</p>
  3. <hr />
  4. <h3>标题二</h3>
  5. <p>This is the entry of... </p>

12. 无语义标签:<div>/<span>

其实 <div>/<span> 这两个标签是有语义的,都是 defines a section in a document。是的,和 HTML5 中的 <section> 其实是一样的。只是,因为搜索引擎的的原因,搜索引擎认为它们是无语义标签,因此他们成了 “无语义” 标签。推荐用法是尽量使用其他来做为页面框架的容器,比如布局、添加额外的视觉效果,而不是段落等的替代品。


  
  
  1. <div id="container">
  2. <div id="content">
  3. </div>
  4. <div id="sidebar">
  5. <ul>
  6. <li><span>God</span>, oh my zsh</span></li>
  7. </ul>
  8. </div>
  9. </div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值