HTML5与HTML4区别

Posted 十斤代码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTML5与HTML4区别相关的知识,希望对你有一定的参考价值。

语法的改变

html5中提高Web浏览器之间的兼容性是他的一个很大的目标,为了确保兼容性,就要有一个统一的标准。因此,在HTML5中,就围绕着这个标准,重新定义了一套在现有的HTML的基础上修改而来的语法,是他运行在各浏览器时各浏览器都能符合这个通用标准。


HTML 5中的标记方法




内容类型 (ContentType)

HTML 5的文件扩展符与内容类型保持不变。也就是说,扩展符仍然为" .html" 或 ".htm" ,内容类型 (ContentType)仍然为 "text/html"

DOCTYPE声明

DOCTYPE声明是HTML文件中必不可少的,它位于文件第一行。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.3.org/TR/xhtml1/DTD/xhtml-transitional.dtd">


在HTML5中,刻意不使用版本声明,一份文档将会适用于所有版本的HTML。

<!DOCTYPE html>

当使用工具时,也可以在DOCTYPE声明方式中加入SYSTEM识别符,声明方法:<!DOCTYPE HTML SYSTEM "about:legacy-compat">(不区分大小写,引号不区分单引号还是双引号)


指定字符编码

在HTML4中,使用meta元素的形式指定文件中的字符编码,如下:

<meta http-equiv="content-Type" content="text/html;charset=UTF-8">

在HTML5中,可以使用对<meta>元素追加charset属性的方式来指定字符编码,从HTML5开始,对于文件的字符编码推荐使用UTF-8如下:

<meta charset="UTF-8">


HTML5确保与之前HTML版本兼容


可以省略标记的元素

不允许写结束标记的元素:

area/base/br/col/command/embed/hr/img/input/keygen/link/meta/param/source/track/wbr

可以省略结束标记的元素:

li/dt/dd/p/rt/rp/optgroup/option/colgroup/thead/tbody/tfoot/tr/td/th

可以省略全部标记的元素:

html/head/body/colgroup/tbody



不允许写结束标记的元素指只能用<元素/>的形式标记。


可以省略全部标记的元素是指该元素可以完全被省略,但还是以隐式的方式存在的。例如,不写body元素,但可以通过document.body访问。


省略引号

在指定属性值的时候,属性值可以添加单引号或双引号。

在HTML5中,当属性值不包括空字符串、“<”">""="单引号双引号等字符时。属性值两边的引号可以省略。

<input type="text">
<input type='text'>
<input type=text>


新增的元素和废弃的元素HTML5与HTML4区别


新增的结构元素


在HTML中div被广泛用于各种布局环境在,没有明确的定义,HTML5将div语义化了。新增加结构标签如下:

a)、section元素 表示页面中的一个内容区块,比如章节、页眉、页脚或页面的其他部分。可以和h1、 h2……等元素结合起来使用,表示文档结构。例:HTML5中<section>……</section>;HTML4中<div> ……</div>。

b)、article元素 表示页面中一块与上下文不相关的独立内容。比如一篇文章。

c)、aside元素 表示article元素内容之外的、与article元素内容相关的辅助信息。

d)、header元素 表示页面中一个内容区块或真个页面的标题。

e)、hgroup元素 表示对整个页面或页面中的一个内容区块的标题进行组合。

f)、footer元素 表示整个页面或页面中一个内容区块的脚注。一般来说,他会包含创作者的姓名、创作日期以及创作者的联系信息。

g)、nav元素 表示页面中导航链接的部分。

h)、figure元素 表示一段独立的流内容,一般表示文档主体流内容中的一个独立单元。使用figcaption元素为figure元素组添加标题。

例如:

<figure>
<figcaption>PRC</figcaption> <p>The People's Republic of China was born in 1949</p> </figure>

HTML4中常写作:

<dl> <h1>prc</h1> <p>The People's Republic of China was born in 1949</p> </dl>

新增的其他元素



a)新多媒体元素

<audio> 定义音频内容
<vedio> 定义视频内容
<source> 定义多媒体资源(audio或vedio)
<embed> 定义嵌入的内容,比如插件
<track> 为如video和 audio元素之类的媒介规定外部文本轨道

b)、图形绘制新元素

<canvas> 标签定义图形,比如图表和其他图像。该标签基于 javascript 的绘图 API

c)新表单元素


<datalist> 定义选项列表。请与 input 元素配合使用该元素,来定义 input 可能的值。
<keygen> 规定用于表单的密钥对生成器字段。
<output> 定义不同类型的输出,比如脚本的输出。

d)新的语义元素

<bdi> 允许您设置一段文本,使其脱离其父元素的文本方向设置。
<command> 定义命令按钮,比如单选按钮、复选框或按钮。
<details> 用于描述文档或文档某个部分的细节。
<dialog> 定义对话框,比如提示框。
<summary> 标签包含 details 元素的标题。
<mark> 定义带有记号的文本。
<meter> 定义度量衡。仅用于已知最大和最小值的度量。
<progress> 定义任何类型的任务的进度。
<ruby> 定义 ruby 注释(中文注音或字符)。
<rt> 定义字符(中文注音或字符)的解释或发音。
<rp> 在 ruby 注释中使用,定义不支持 ruby 元素的浏览器所显示的内容。
<time> 定义日期或时间。
<wbr> 规定在文本中的何处适合添加换行符。


废弃的元素


以下的 HTML 4.01 元素在HTML5中已经被删除,虽然浏览器为了兼容性考虑都还支持这些标签,但建议使用新的替代标签,矛盾的是老浏览器对新标签的支持度又不够,视项目的受众对象而定。

1、能用CSS代替的元素

这些元素包含basefont、big、center、font、s、strike、tt、u。这些元素纯粹是为页面展示用的,表现的内容应该由CSS完成。

2、frame框架

这些元素包含frameset、frame、noframes。HTML5中不支持frame框架,只支持iframe框架,或者用服务器方创建的由多个页面组成的符合页面的形式,删除以上这三个标签。

3、只有部分浏览器支持的元素

这些元素包含applet、bgsound、blink、marquee等标签。

4、其他被废除的元素

废除rb,使用ruby替代

废除acronym使用abbr

替代废除dir使用ul替代

废除isindex使用form与input相结合的方式替代

废除listing使用pre替代

废除xmp使用code替代

废除nextid使用guids

废除plaintex使用“text/plian”(无格式正文)MIME类型替代


新增及废除属性HTML5与HTML4区别HTML5与HTML4区别


新增属性



1、表单属性

a)、autofocus

对input[所有类型]、select、textarea与button指定autofocus属性。它以指定属性的方式让元素在页面加载后自动获得焦点。一个页面只能有一个元素有autofocus属性,同时设置多个,则第一个生效。

这个属性对登录页面很有用,可提升用户体验,有时登录页面就一个用户名,密码,页面加载后用户要手动定位到输入框,才能输入,有了autofocus,页面打开即可直接输入。

例如:

<form><p>用户名:<input type="text" autofocus /></p><p>密&nbsp;&nbsp;码:<input type="password"/></p></form>


b)、placeholder

对input[text, search, url, telephone, email 以及 password]、textarea指定placeholder属性,它会对用户的输入进行提示,提示用户期待什么样的输入。当输入框获取焦点时,提示字符消失。这个属性也能提升用户体验,用的已经相当普遍了。

c)、form属性

对input[所有类型]、output、select、textarea、button与fieldset指定form属性。它声明属于哪个表单,然后将其放置在页面的任何位置,都在表单之内。这个属性解放了form表单里的元素,给我们在复杂的布局时带来方便。

一个输入域可以属于一个或多个表单,多个表单用空格分隔开。输入域的form属性必须引用所属表单的id

<form action="" method="" id="user_form"><p>用户名:<input type="text" autofocus placeholder="用户名"/></p></form><p>下面的密码框在form表单之外,但仍然属于form表单会被提交到服务器</p><p>密&nbsp;&nbsp;码:<input type="password" placeholder="密码" form="user_form"/></p>

d)、required属性

该属性表示用户提交时检查该元素输入域不能为空。

适用于以下类型的 input[text, search, url, telephone, email, password, date pickers, number, checkbox, radio, file]。

<form action="" method="" id="user_form"><p>用户名:<input type="text" autofocus placeholder="用户名" required/></p><p><input type="submit" value="提交"/></p></form>

e)、autocomplete属性


设置"autocomplete"属性为"on",则用户在自动完成域输入时,浏览器会在该域内显示填写的选项。

<form action="" method="get" autocomplete="on"> First name: <input type="text" name="fname" /><br /> Last name: <input type="text" name="lname" /><br /> E-mail: <input type="email" name="email"autocomplete="on"/><br /> <input type="submit" /></form>

f)、重置表单默认行为的新属性

html5中表单的自由度非常高,因为html5为input[submit,image]、button元素增加formaction、formenctype、formmethod、formnovalidate与formtarget几个新属性,能对form元素的某些属性重置,比如 能做到表单1的提交按钮提交表单2等。

formaction:重写表单action属性

formenctype:重写表单enctype属性

formmethod:重写表单method属性

formnovalidate:重写表单novalidate属性

formtarget:重写表单target属性

举例:formaction和formmethod

html中,一个表单内的所有元素都通过表单的action属性统一提交到另一个页面。html5中可通过formaction属性实现点击不同提交按钮,将表单提交到不同的页面。

html中一个表单只有一个action属性来对表单内所有元素统一指定提交页面,每个表单只有一个method属性统一指定提交方法。html5中新增的formmethod方法,可以实现不同按钮指定不同提交方法,比如post,get等。

<form action="server.jsp" method="get" id="user_form"> E-mail: <input type="email" name="useremail" /><br /> <input type="submit" formmethod="get" formaction="s1.jsp" value="get方法提交到s1.jsp" /><br /> <input type="submit" formmethod="post" formaction="s2.jsp" value="post方法提交到s2.jsp" /><br /></form>

举例:formnovalidate属性,可以取消提交时进行的有关检查,表单可以被无条件地提交[哪怕form里有required,min,max等]。

<form action="demo_form.jsp" method="get" id="user_form"> E-mail:   <input type="email" required name="useremail" /><br /> <input type="submit" formnovalidate="true" value="Submit without validation" /> </form>

点击“Submit without validation”按钮时,Form 不会做任何校验,虽然有required属性,表单空仍然可以提交。

g)、list属性

list属性与 datalist元素配合使用,用来规定输入域的datalist。datalist是输入域的选项列表,该元素类似<select>,但是 比select更好的一点在,当用户要设定的值不在选择列表内时,允许自行输入,该元素本身不显示,当文本框获得焦点时以提示输入的方式显示。

list值为文档中的 datalist 的 id,又看到了熟悉的id,回想一下form属性引用的是表单的id。

<form action="demo_form.jsp" method="get"> 主页:<input type="url" list="url_list" name="link" /> <datalist id="url_list"> <option label="baidu" value="http://www.baidu.com" /> <option label="qq" value="http://www.qq.com" /> <option label="Microsoft" value="http://www.microsoft.com" /> </datalist> <input type="submit" /></form>


举例:datalist和autocomplete配合使用

前面讲了autocomplete属性可以让用户完成域输入时,浏览器在该域内显示填写的选项。现在datalist元素与autocomplete属性配合使用可更好的提升用户体验。

在上面代码基础上给datalist增加autocomplete属性,即<datalist id="url_list" autocomplete>。

用户第一次输入http:www.google.com提交后,再次输入时会同时给出datalist的option提示和autocomplete增加的提示。

h)、max,min和step属性

max,min和step属性用来为包含数字或日期的input类型规定限定或者说约束。

max属性规定输入域所允许的最大值。

min属性规定输入域允许的最小值。

step属性为输入域规定合法的数字间隔。(假如 step="3",则合法数字应该是 -3、0、3、6,以此类推)step 属性可以与 max 以及 min 属性配合使用,以创建合法值的范围。

max,min,step属性适用于input[datepickers,number,range]。

举例:

这是一个非常好的属性,之前有人问我用<input type="time">来输入时间,奈何firefox浏览器不支持怎么办。可以通过min max 模拟实现一个时间输入框,小时允许输入[0~23],分钟允许输入[0~59]。

<form action="demo_form.jsp" method="get"> <label>time小时,分钟:<input type="time" name="user_time"></label> <p>input类型time在firefox下不支持,给出模拟实现方案</p> <label><input type="number" min="0" max="23" step="1"></label> <label><input type="number" min="0" max="59"></label> <input type="submit" value="提交"/></form>


i)、pattern属性

pattern属性用于验证输入字段的模式,其实就是正则表达式,不用再写js绑定正则验证了,非常方便。

pattern属性适用于input[text,search,url,telephone,email,password]

举例:给输入框定义了 Pattern 为“[A-z]{3}”,也就是包含三个字母的正则表达式约束

<form action="#" method="get" id="user_form"> Country code: <input type="text" name="country_code" pattern="[A-z]{3}"title="Three letter country code" /> <input type="submit" /></form>


j)、multiple属性

multiple属性规定输入域中可选择多个值。

multiple属性适用于input[email,file]。

2、链接属性

a)、media属性

为a、area增加media属性。规定目标 URL 是为哪种类型的媒介/设备进行优化的,只能在href属性存在时使用。该属性用于规定目标 URL 是为特殊设备(比如 iPhone)、语音或打印媒介设计的,可接受多个值。【感觉没啥用~~】

<a href="http://www.baidu.com" media="print and (resolution:300dpi)" >查询</a>

b)、<area>新增herflang、media、rel、type属性

c)、<link>新增sizes属性

d)、<base>新增target属性

为base元素增加target属性,主要是保持与a元素的一致性。

<!DOCTYPE html><html><head> <meta charset="UTF-8" /> <title>base element target</title> <base href="http://localhost/ " target="_blank"></head><body><a href="a.html" >a.html页面</a></body></html>

点a.html页面将在新窗口中打开链接:http://localhost/a.html

3、其他属性

a)、ol新增reversed属性

reversed是个bool属性,规定有序列表倒序。

举例:有序列表起始值50,倒序。

<ol start="50" reversed> <li>coffee</li> <li>Tea</li> <li>Milk</li></ol>

b)、meta新增charset属性

c)、menu新增type和label属性

d)、style新增scoped属性

html5为style增加scoped属性。有了一个样式作用域的概念,它允许我们为文档的指定部分定义样式,而不是整个文档。如果使用 "scoped" 属性,那么所规定的样式只能应用到 style 元素的父元素及其子元素。scoped为开发单页面样式带来方便。

e)、script新增async属性

html5为script新增了一个async属性,用来定义脚本是否异步执行。async仅适用于外部脚本(只有在使用src属性时)。

f)、html元素新增manifest属性

html5为html元素增加manifest,指向一个用于结合离线web应用API的应用程序缓存清单。开发离线web应用程序时他与API结合使用,定义一个URL,在这个URL上描述文档的缓存信息。

访问一次以后下次就是断网了也能看到以前的内容

g、iframe元素新增sandbox、seamless、srcdoc属性

为iframe增加三个属性,sandbox、seamless、srcdoc。用来提高页面安全性,防止不信任的web页面执行某些操作。

删除属性



删除了一些可以用css代替的属性,多余属性和其他属性。


全局属性

全局属性:对于任何一个标签都是可以使用的属性。

1.contenteditable

是否允许用户编辑内容,是个非常神奇的属性,通常我们使用的输入文本内容的标签是input和textarea,使用contentEditable,可以在div,table,p,span,body等很多元素中输入内容,点击时出现一个编辑框。配合js对网页内容局部修改。过去要使用输入框替代。

当一个元素的contenteditable状态为true(contenteditable属性为空字符串,或为true,或为inherit且其父元素状态为true)时,意味着该元素是可编辑的。否则,该元素不可编辑。

 <p>这是一个不可编辑的段落。</p>  <p contenteditable ="true">这是一个可编辑的段落。</p>

2.desginMode

用来指定整个页面是否可编辑,有两个值,on和off。该属性只能用javascript来修改值。如果design设置为on,则所有允许设置contenteditable的元素都可编辑。

用法:【不咋实用】

window.document.designmode="off";

3.hidden布尔值

表示元素的不可见状态,有2个值,true和false。

<label hidden>看不见 </label>

4.spellcheck

规定是否必须对元素进行拼写或语法检查。用了spellcheck属性,浏览器会帮助检查html元素文本内容拼写是否正确,只有当html元素在可编辑状态,sepllcheck属性才有意义,所以一般是针对input[text],textarea元素用户输入内容进行拼写和语法检查,拼写错误有红色的波浪下划线,右键会给提示。必须声明true或false

<textarea spellcheck="true" cols="60" rows="5"> </textarea>


5.tabindex

tabindex 属性规定元素的 tab键切换顺序(当 tab 键用于导航时),可将tabIndex属性设成1到32767的一个值。

tabindex属性设为一个负值(如tabindex="-1")时,用户使用tab键切换时该html元素将不会被选中。




















以上是关于HTML5与HTML4区别的主要内容,如果未能解决你的问题,请参考以下文章

html4 与 html5的区别

Html5 与 Html4 的区别

HTML5与HTML4的10个关键区别

HTML5与HTML4区别

html5与传统html区别

html5与html 4.01的区别 doctype几种分类及其不同