HTML代码优化之标签语义化

来源:互联网 发布:阿里云ecs开放端口 编辑:程序博客网 时间:2024/06/08 12:09

在HTML、CSS、JavaScript这三大元素中,HTML才是重要的,结构才是重点,样式是用来修饰结构的。正确的做法是先确定HTML,确定语义的标签,再来选用适合的CSS。

如何确定标签是否语义良好?
判断标签语义化是否良好的一个简洁方法:去掉样式,看网页结构是否组织良好有序,是否仍然有良好的可读性。语义良好的网页去掉样式后结构依然很清晰。

除了去掉样式后的可读性,值得重点提及的还有h标签。h标签的语义是”标题”,搜索引擎对这个标签比较敏感,尤其是h1和h2.一个语义良好的页面,h标签应该是完整有序没有断层的。也就是说,要按照h1、h2、h3、h4这样的顺序排列下来,不要出现类似h1、h3、h4漏掉h2的情况。

下面列举一些常见的模块

(1)标题和内容
html部分:

<div class="title">    <h2>标签的语义</h2>    <a href="#">更多&gt;&gt</a></div><p>段落一的内容......<strong>根据浏览器的默认样式</strong>......</p><p>段落二的内容</p>

css部分:

.title{border-bottom: 1px dashed #FFF;text-align: right;}.title h2{float: left;}p{text-indent: 2em;line-height: 150%; margin: 0 0 20px 0;}strong{color: red;font-weight: normal;}

当页面内标签无法满足设计需要时,才会适当添加div和span等无语义标签来辅助实现

(2)表单
这里写图片描述
这种表单模式,可以使用如下的方案实现其效果

<form action="#" method="get">    <fieldset>        <legend>登录表单</legend>        <p>            <label for="name">账号:</label>            <input type="text" id="name"/>        </p>                                <p>            <label for="pas">密码:</label>            <input type="password" id="pw"/>        </p>        <input type="submit" value="登录" class="subBtn"/>    </fieldset></form>

分析一下语义

<表单 action="#" method="get">    <域集>        <域集名>登录表单</域集名>        <段落>            <表单项说明 for="name">账号:</表单项说明>            <表单项 type="text"/>        </段落>                                <段落>            <表单项说明 for="pas">密码:</表单项说明>            <表单项 type="password"/>        </段落>        <表单项 type="submit" value="登录" class="subBtn"/>    </域集></表单>

一般来说,表单域要用fieldset标签包起来,并用legend标签说明表单的用途。因为fieldset默认有边框,而legend也有默认的样式,为满足设计需要,可以将fieldset的”border”设为”none”,把legend的”display”设为”none”,以此来兼顾语义和设计两方面的要求。每个input标签对应的说明文本都需要使用label标签,并且通过为input设置id属性,在label标签中设置”for=someid”来让说明文本和相应的input标签关联起来。

(3)表格
这里写图片描述

这种表格模式,可以使用如下的方案实现其效果

<table border="1">    <caption>几种页面实现的比较</caption>    <thead>        <tr>            <th>实现方式</th>            <th>代码量</th>            <th>搜索引擎良好</th>            <th>特殊终端兼容</th>        </tr>    </thead>    <tbody>        <tr>            <th>table布局</th>            <td></td>            <td></td>            <td>一般</td>        </tr>        <tr>            <th>乱用标签的css布局</th>            <td></td>            <td>一般</td>            <td></td>        </tr>        <tr>            <th>标签语义良好的css布局</th>            <td></td>            <td></td>            <td></td>        </tr>    </tbody></table>

分析一下语义

<表格 border="1">    <表格标题>几种页面实现的比较</表格标题>    <表格头部>        <表格行>            <表头>实现方式</表头>            <表头>代码量</表头>            <表头>搜索引擎良好</表头>            <表头>特殊终端兼容</表头>        </表格行>    </表格头部>    <表格主体>        <表格行>            <表头>table布局</表头>            <表格单元格></表格单元格>            <表格单元格></表格单元格>            <表格单元格>一般</表格单元格>        </表格行>        <表格行>            <表头>乱用标签的css布局</表头>            <表格单元格></表格单元格>            <表格单元格>一般</表格单元格>            <表格单元格></表格单元格>        </表格行>        <表格行>            <表头>标签语义良好的css布局</表头>            <表格单元格></表格单元格>            <表格单元格></表格单元格>            <表格单元格></表格单元格>        </表格行>    </表格主体></表格>

方案二的语义清晰了很多,在使用表格的时候,应该注意选用合适的标签,表格标题要用caption,表头要用thread包围,主体部分用tbody包围,尾部要用tfoot包围,表头和一般的单元格要区分,表头用th,一般表格用td

语义标签化应注意的一些问题
为了保证网页去掉样式后的可读性,并且又符合Web标准,应注意以下几点:
(1)尽可能少使用无语义标签div和span
(2)在语义不明显,即可以使用p也可以使用div的地方,尽量使用p,因为p默认样式下有上下间距,去样式后的可读性更好,对兼容终端有利。
(3)不要使用纯样式标签,例如b、font和u等,改用css设置。语义上需要强调的文本可以包在strong或em标签里,strong和em有“强调”的语意,其中strong的默认样式是加粗,而em的默认样式是斜体。

参考资料:《编写高质量代码Web前端开发修炼之道》
(完)

1 0