高质量的HTML

简介:

本系列源自《编写高质量代码-web前端开发修炼之道》

HTML,CSS,JavaScript三者中,HTML作为结构,CSS作为修饰,JavaScript作为控制。不管是在前端还是后台,结构都是非常重要的,使用HTML时必须要考虑语义化。

1.如何确定你的标签是否语义化?

浏览器会给标签给定默认样式,所以就算不用CSS修饰也能体现一些简单的样式。因此判断一个网页标签是否语义化的简单方法是:去掉CSS,看网站结构是否组织良好有序,是否仍然有良好的可读性。
你可以手动注释CSS代码,也可以使用web调试工具,比如firefox的Web Developer插件,可以禁用CSS。

2.如何选用正确的标签?

下面举了一些常见的例子:

2.1标题和内容


要 实现上面这个样式,可以使用方案一:
	<div class="container">
		<h2>标签的语义<a href="#">更多>></a></h2>
		<p>段落一的内容.....<strong>重要部分</strong>......</p>
		<p>段落二的内容.....<strong>重要部分</strong>......</p>
		<p>段落三的内容很长长长长长长长长长长长长长长长长长长长长.</p>
	</div>
        <style type="text/css">
	.container{
		width: 400px;
		margin: 0 auto;
		background-color: #ff0;
	}
	h2{
		position: relative;
		border-bottom: 1px dashed #333;
	}
	h2 a{
		position: absolute;
		right: 0;
		top: 0;
	}
	p{
		text-indent: 2em;
		line-height: 150%;
		margin: 0 0 1em 0;
	}
	strong{
		color:red;
		font-weight: normal;
	}
	</style>

 此方案将锚点放在了h2中,但很明显锚点”更多“不属于标题,所以这个是不合语义的。下面是方案二: 
	<div class="container">
		<div class="title">
			<h2>标签的语义</h2>
			<a href="#">更多>></a>
		</div>
		<p>段落一的内容.....<strong>重要部分</strong>......</p>
		<p>段落二的内容.....<strong>重要部分</strong>......</p>
		<p>段落三的内容很长长长长长长长长长长长长长长长长长长长长.</p>
	</div>
CSS代码就不贴了,将锚点从标题中提出来,同时在二者外再加一个div块,表示他们形式上应该属于一个整体。方案二结构看起来要清晰的多。

2.2表单

一般来说,表单域要用fieldset标签包起来,并用legend标签说明表单的用途。fieldset默认有边框,可以按需要更改样式,也可以隐藏legend标签,以此来兼顾语义和显示。
每个input标签对应一个label,通过for联系起来,下面是示例:
<form action="" method="" class="fieldset">
  <fieldset>
    <legend>登录表单</legend>
    <p>
    	<label for="name">账号:</label>
    	<input type="text" id="name"/>
    </p>
    <p>
    	<label for="pw">密码:</label>
    	<input type="text" id="pw"/>
    </p>
    <input type="submit" value="登录" class="subBtn">
  </fieldset>
</form>

2.3表格


表格经常用在数据显示页面上。table常用的标签有caption、thead、tbody、tfoot、tr、td、th。表格标题要用caption,表头用thead包围,主体用tbody包围,尾部用tfoot包围。
表头和一般单元格要分开,表头用th,单元格用td。
<table>
	<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>乱用标签</th>
			<td>多</td>
			<td>差</td>
			<td>一般</td>
		</tr>
	</tbody>
</table>

2.4语义化标签应该注意的问题

为了保证网页去除样式后的可读性,并且又符合Web标准,应该注意以下几点:
1.尽量少用div和span,用更加语义化的标签来代替它们;
2.语义不明显,既可以用p又可以用div的情况下,尽量用p。因为p默认有上下间距,去除样式后可读性更好 ,对兼容特殊终端有利;
3.不要使用纯样式标签,例如b,font,u等,改用CSS设置。语义上需要强调的用strong和em,二者有强调之意。

相关文章
|
SQL Oracle 关系型数据库
sql字段类型和时间格式转换
sql字段类型和时间格式转换
728 0
|
消息中间件 算法 Linux
【Linux】详解如何利用共享内存实现进程间通信
【Linux】详解如何利用共享内存实现进程间通信
1233 1
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的厨到家服务系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的厨到家服务系统的详细设计和实现(源码+lw+部署文档+讲解等)
110 0
|
弹性计算 云计算
阿里云2核4G服务器多少钱一年?2024年阿里云2核4G服务器价格来了
在云计算时代,云服务器已成为企业和个人用户的首选。阿里云,作为国内云计算的领军者,始终以优质的产品和服务赢得用户的信赖。近日,阿里云再次推出超值优惠,让我们一起来看看吧! 此次优惠活动的主角是阿里云2核4G通用算力型u1实例云服务器ECS 1M带宽版。这款服务器配置均衡,性能卓越,无论是企业搭建网站、应用部署还是个人学习、测试都是绝佳选择。而最让人心动的,莫过于它的价格了。
141 1
|
Java 程序员
【面试问题】happens-before 是什么?
【1月更文挑战第27天】【面试问题】happens-before 是什么?
|
存储 测试技术 API
为什么大多数团队推行自动化测试最后却不了了之?
随着软件行业的快速发展,接口测试用例在软件开发中扮演着越来越重要的角色。自动化测试作为软件测试的一个重要分支,一般可以提高测试效率和质量,节约测试成本和时间,但是在实际推行过程中,大多数团队最终却难以持续实施自动化测试,不是编写测试用例有多难,而是维护测试用例的成本非常高,通常是“编写用例一时爽,维护起来火葬场”。于是对于如何有效地编写和运行接口测试用例就成了一个重要的话题。
|
SQL JSON Java
发现Seata TCC模式的一个BUG,顺手给社区提了一个issue
发现Seata TCC模式的一个BUG,顺手给社区提了一个issue
422 0
|
负载均衡 应用服务中间件 测试技术
手把手教你,使用 Nginx 搭配 Tomcat 实现负载均衡!(二)
说到 Nginx ,相信大家都不会陌生,最常用的莫过于:用它来与 Tomcat 搭配做负载均衡,起到灰度发布的作用,同时保证系统高可用!
手把手教你,使用 Nginx 搭配 Tomcat 实现负载均衡!(二)
Google,一家致力于网页静音的公司
Google 为此付出了长达六七年的努力。
2357 0
|
Web App开发 安全 应用服务中间件
Nginx配合modsecurity实现企业级WAF应用防火墙功能
      ModSecurity原本是Apache上的一款开源waf,可以有效的增强web安全性,目前已经支持nginx和IIS,配合nginx的灵活和高效,可以打造成生产级的WAF,是保护和审核web安全的利器     对于配置以及基础教程在下面这本书中都已经提到了有感兴趣的可以联系我 目前这.
2539 0