HTML代码优化之标签语义化

在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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值