理解HTML语义化
什么是HTML语义化?
基本上都是围绕着几个主要的标签,像标题(H1~H6)、列表(li)、强调(strong em)等等,根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析。
为什么要语义化?
1,为了在没有CSS的情况下,页面也能呈现出很好地内容结构、代码结构;
2,用户体验:例如title、alt用于解释名词或解释图片信息、label标签的活用;
3,有利于SEO:和搜索引擎建立良好沟通,有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重;
4,方便其他设备解析(如屏幕阅读器、盲人阅读器、移动设备)以意义的方式来渲染网页;
5,便于团队开发和维护,语义化更具可读性,是下一步吧网页的重要动向,遵循W3C标准的团队都遵循这个标准,可以减少差异化。
写HTML代码时应注意什么?
1,尽可能少的使用无语义的标签div和span;
2,在语义不明显时,既可以使用div或者p时,尽量用p, 因为p在默认情况下有上下间距,对兼容特殊终端有利;
3,不要使用纯样式标签,如:b、font、u等,改用css设置。
4,需要强调的文本,可以包含在strong或者em标签中(浏览器预设样式,能用CSS指定就不用他们),strong默认样式是加粗(不要用b),em是斜体(不用i);
5,使用表格时,标题要用caption,表头用thead,主体部分用tbody包围,尾部用tfoot包围。表头和一般单元格要区分开,表头用th,单元格用td;
6,表单域要用fieldset标签包起来,并用legend标签说明表单的用途;
7,每个input标签对应的说明文本都需要使用label标签,并且通过为input设置id属性,在lable标签中设置for=Id来让说明文本和相对应的input关联起来。
IE浏览器兼容性
h5标签在ie浏览器上只兼容ie8以上版本(ie8不兼容)。
所以为了兼容ie6-8浏览器,我们可以引入html5shiv.js
。
html5shiv.js是什么
html5shiv.js下载地址
引入方式:
<!--[if lt IE 9]>
<script type="text/javascript" src="js/html5shiv.js"></script>
<![endif]-->
H5常用语义化标签
<header>
定义文档的页眉(头部)。
<nav>
定义导航栏连接的部分。
<footer>
定义文档或节的页脚(底部)。
<aside>
侧边栏,定义内容之外的内容。
<article>
语义化更强,规定独立的自包含内容。
<section>
定义文档中的节(类似div)。
div,section,article的区别和使用:
原文链接
1)div在html早期版本就支持了,section和article是html5提出的两个语义化标签。如果只是针对一个块内容做样式化,三者并无区别。
2)作为语义化标签,section 应用的典型场景有文章的章节、标签对话框中的标签页、或者论文中有编号的部分。一般来说,当元素内容明确地出现在文档大纲中时,section 就是适用的。
3)对于article标签来说,无论从结构上还是内容上来说,article 本身就是独立的、完整的。有个最简单的判断方法是看这段内容脱离了所在的语境,是否还是完整的、独立的,如果是,则应该用article标签。
4)div section article ,语义是从无到有,逐渐增强的。div 无任何语义,仅仅用作样式化或者脚本化,对于一段主题性的内容,则就适用 section,而假如这段内容可以脱离上下文,作为完整的独立存在的一段内容,则就适用 article。原则上来说,能使用 article 的时候,也是可以使用 section 的,但是实际上,假如使用 article 更合适,那么就不要使用 section 。
datalist标签
定义选项列表,需要与input
标签同时使用。
<input id="myCar" list="cars" />
<datalist id="cars">
<option value="BMW">
<option value="Ford">
<option value="Volvo">
</datalist>
执行结果:
fieldset标签
<fieldset>
标签可以将表单内的相关元素分组。
<legend>
元素为 fieldset 元素定义标题
<form>
<fieldset>
<legend>健康信息</legend>
身高:<input type="text" />
体重:<input type="text" />
</fieldset>
</form>
执行结果:
> H5新增的表单标签属性
<!-- html5新增标签 -->
<!-- 邮箱格式输入 -->
<input type="email"><br />
<!-- 手机号格式输入 -->
<input type="tel"><br />
<!-- url格式输入 -->
<input type="url"><br />
<!-- 数字格式输入 -->
<input type="number"><br />
<!-- 搜索框 -->
<input type="search"><br />
<!-- 自由拖动滑块 -->
<input type="range"><br />
<!-- 小时分钟选择框 -->
<input type="time"><br />
<!-- 年月日选择框 -->
<input type="date"><br />
<!-- 年月选择框 -->
<input type="month"><br />
<!-- 年周选择框 -->
<input type="week"><br />
执行结果:
设置禁用属性
<!-- html5新增属性 -->
<input type="text" disabled value="设置禁用属性">
设置只读属性
<input type="text" readonly value="设置只读属性">
加载页面结束后自动获取焦点
<input type="text" autofocus value="加载页面结束后自动获取焦点">
提价表单时不能为空
<input type="text" required value="提价表单时不能为空">
用Alt + s 组合键,为此元素获取焦点
<input type="text" accesskey="s" value="用Alt + s 组合键,为此元素获取焦点">
执行结果: