zoukankan      html  css  js  c++  java
  • HTML5与HTML4的区别

    HTML5发展已有4年了,现在已经逐步成熟,而且各主流浏览器也已经支持到位,是时候学习一下了。首先需要了解HTML5与HTML4的区别,这让学习思路更清晰。

    语法变化

    • 内容类型(ContentType)不变
      扩展名和ContentType仍然和HTML4保持一致:扩展名是“.html”或“.htm”,ContentType是“text/html”。
    • DOCTYPE声明简化
      不再是HTML4带版本的繁琐声明
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      而是非常简短的声明
      <!doctype html>
    • 指定文档编码
      还是使用meta来指定文档编码,但也对HTML4做了简化,HTML4
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      HTML5直接指定编码
      <meta charset="utf-8">
      实际上HTML5对上面的两种方式都兼容,但不能混用!而且HTML5推荐使用UTF-8编码。
    • 可以省略的标记元素
      1. 不允许写结束标记的元素
        area、base、br、col、command、embed、hr、img、input、keygen、link、meta、param、source、track、wbr
        不允许使用开始标记与结束标记将元素括起来的形式,只允许使用“<元素/>”的形式进行书写,例如“<br>....</br>”是错误。
      2. 可以省略结束标记的元素
        li、dt、dd、p、rt、rp、optgroup、option、colgroup、thead、tbody、tfoot、tr、td、th
      3. 可以省略全部标记的元素
        html、head、body、colgroup、tbody 
        该元素可以完全省略,实际上即使标记被省略了,他们也还是以隐式的方式存在的,如将body元素省略时,还是可以通过document.body进行访问,这是因为浏览器会自动加上它们。 
    • 具有boolean值的属性
      有些属性是boolean类型的,如disabled、readonly等,只设属性不设置属性值、或把属性值设为任何值即使是空字符串都为真;而不设属性或把属性值设为false都为假
      <!--只设属性不设属性值为真-->
      <input type="checkbox" checked>
      <!--属性值设为属性名为真-->
      <input type="checkbox" checked="checked">
      <!--属性值设为true为真-->
      <input type="checkbox" checked="true">
      <!--属性值设为空字符串为真-->
      <input type="checkbox" checked="">
      <!--属性值即使设为false都为真-->
      <input type="checkbox" checked="false">
      <!--属性设为任何值都为真-->
      <input type="checkbox" checked="ssss">
      
      <!--不设属性为假-->
      <input type="checkbox">
    • 省略引号
      我们知道在指定属性值的时候,属性值两边既可以用双引号,也可以用单引号。而HTML5在此基础上做了一些改进,当属性值不包括空字符串、“<”、“>”、“=”、单引号、双引号等字符串时属性值两边的引号可以省略。如:
      <!--只设属性不设属性值为真-->
      <input type=checkbox checked>
      <!--属性值设为属性名为真-->
      <input type=checkbox checked=checked>
      <!--属性值设为true为真-->
      <input type=checkbox checked=true>
      <!--属性值设为空字符串为真-->
      <input type=checkbox checked="">
      <!--属性值即使设为false都为真-->
      <input type=checkbox checked=false>
      <!--属性设为任何值都为真-->
      <input type=checkbox checked=ssss>
      
      <!--不设属性为假-->
      <input type=checkbox>

    新增元素

    • 新增结构元素
      主体结构元素
      <section>:表示页面的一个内容区块; 
      <article>:表示页面一块独立内容;
      <aside>:表示页面上<article>元素之外的但是与<article>相关的辅助信息;
      <nav>:表示页面中导航链接的部分;
      非主体结构元素
      <header>:表示页面中一个内容区块<section>或者整个页面的标题;
      <hgroup>:表示对于整个页面或者页面一个内容区块<section>的<header>进行组合;
      <footer>:表示对整个页面或者页面一个内容区块<session>的页脚;
      <figure>:表示一段独立的文档流内容;
      <figcaption>:表示<figure>元素的标题;
    • 与结构无关的元素
      <video>:用于定义视频,无需<object type="video/ogg">;
      <audio>:用于定义音频, 无需<object type="application/ogg">;
      <embed>:用于插入各种多媒体,可以各种格式;
      <mark>: 用于向用户在视觉上突出显示某些文字;
      <progress>:表示运行中的进程;
      <time>: 用于表示日期或者时间, 或者两者;
      <ruby>元素: 表示ruby注释;
      <rt>:表示字符的解释或者发音;
      <rp>:在<ruby>内使用,表示不支持<ruby>元素的浏览器所显示的内容;
      <wbr>元素:表示软换行,可以根据浏览器的窗口或者父级元素的宽度自己决定;
      <canvas>:表示画布,然后让脚本把想画的东西画在上面;
      <command>:表示命令按钮;
      <details>:表示当用户点击某元素时候想要得到的细节信息,常和<summary>元素联合使用;
      <summary>:是<details>元素的第一个子元素,表示了<details>的标题;
      <datalist>元素:表明了可以选择的数据列表,以下拉列表形式显示;
      <datagrid>:表明了可选的数据列表,但是以树列表的形式显示;
      <keygen>:表示生成密钥;
      <output>:表示不同类型的输出;
      <source>:表示为<video><audio>等媒体元素定义资源;
      <menu>:表示了菜单列表;
    • 新增的<input>元素的类型
      <email>: 表示必须输入email地址的文本输入框;
      <url>:表示必须输入url地址的文本输入框;
      <number>:表示必须输入数值的文本输入框;
      <range>:表示必须输入一定范围内数字的文本输入框;
      Date Pickers:HTML5拥有多个可供选取日期和时间的新型输入文本框如date、month、week、time、datetime等;

    废除的元素

    • 能用css代替的元素
      basefont、big、center、font、s、strike、tt、u。这些元素纯粹是为画面展示服务的,HTML5中提倡把画面展示性功能放在css中统一编辑。
    • 不再使用frame框架
      frameset、frame、noframes。HTML5中不支持frame框架,只支持iframe框架,或者用服务器方创建的由多个页面组成的符合页面的形式,删除以上这三个标签。
    • 只有部分浏览器支持的元素
      applet、bgsound、blink、marquee等标签。
    • 其他被废除的元素
      废除rb,树勇ruby替代;
      废除acronym使用abbr替代;
      废除dir使用ul替代;
      废除isindex使用form与input相结合的方式替代;
      废除listing使用pre替代;
      废除xmp使用code替代;
      废除nextid使用guids;
      废除plaintex使用“text/plian”(无格式正文)MIME类型替代;

    新增的属性

    1. 表单相关的属性
      • 对input(type=text)、select、textarea与button指定autofocus属性。它以指定属性的方式让元素在画面打开时自动获得焦点。
      • 对input(type=text)、textarea指定placeholder属性,它会对用户的输入进行提示,提示用户可以输入的内容。
      • 对input、output、select、textarea、button与fieldset指定form属性。它声明属于哪个表单,然后将其放置在页面的任何位置,而不失表单之内。
      • 对input(type=text)、textarea指定required属性。该属性表示用户提交时进行检查,检查该元素内必定要有输入内容。
      • 为input标签增加几个新的属性:autocomplete、min、max、multiple、pattern与step。还有list属性与datalist元素配合使用;datalist元素与autocomplete属性配合使用。multiple属性允许上传时一次上传多个文件; pattern属性用于验证输入字段的模式,其实就是正则表达式。step 属性规定输入字段的合法数字间隔(假如 step="3",则合法数字应该是 -3、0、3、6,以此类推),step 属性可以与 max 以及 min 属性配合使用,以创建合法值的范围。
      • 为input、button元素增加formaction、formenctype、formmethod、formnovalidate与formtarget属性。用户重载form元素的action、enctype、method、novalidate与target属性。为fieldset元素增加disabled属性,可以把它的子元素设为disabled状态。
      • 为input、button、form增加novalidate属性,可以取消提交时进行的有关检查,表单可以被无条件地提交。
    2. 链接相关属性
      • 为a、area增加media属性。规定目标 URL 是为什么类型的媒介/设备进行优化的。该属性用于规定目标 URL 是为特殊设备(比如 iPhone)、语音或打印媒介设计的。该属性可接受多个值。只能在 href 属性存在时使用。
      • 为area增加herflang和rel属性。hreflang 属性规定在被链接文档中的文本的语言。只有当设置了 href 属性时,才能使用该属性。注释:该属性是纯咨询性的。rel 属性规定当前文档与被链接文档/资源之间的关系。只有当使用 href 属性时,才能使用 rel 属性。
      • 为link增加size属性。sizes 属性规定被链接资源的尺寸。只有当被链接资源是图标时 (rel="icon"),才能使用该属性。该属性可接受多个值。值由空格分隔。
      • 为base元素增加target属性,主要是保持与a元素的一致性。
    3. 其他属性
      • 为ol增加reversed属性,它指定列表倒序显示;
      • 为meta增加charset属性;
      • 为menu增加type和label属性。label为菜单定义一个课件的标注,type属性让才当可以以上下文菜单、工具条与列表cande但三种形式出现。
      • 为style增加scoped属性。它允许我们为文档的指定部分定义样式,而不是整个文档。如果使用 "scoped" 属性,那么所规定的样式只能应用到 style 元素的父元素及其子元素。
      • 为script增减属性,它定义脚本是否异步执行。async 属性仅适用于外部脚本(只有在使用 src 属性时)有多种执行外部脚本的方法:
        如果 async="async":脚本相对于页面的其余部分异步地执行(当页面继续进行解析时,脚本将被执行);
        如果不使用 async 且 defer="defer":脚本将在页面完成解析时执行;
        如果既不使用 async 也不使用 defer:在浏览器继续解析页面之前,立即读取并执行脚本;
      • 为html元素增加manifest,开发离线web应用程序时他与API结合使用,定义一个URL,在这个URL上描述文档的缓存信息。
      • 为iframe增加撒个属性,sandbox、seamless、srcdoc。用来提高页面安全性,防止不信任的web页面执行某些操作。

    废除的属性

    在HTML 4中使用的属性 使用该属性的元素 在HTML 5中的替代方案
    rev link、a rel
    charset link、a 在被链接的资源的中使用HTTP Content-type头元素
    shape、coords a 使用area元素代替a元素
    longdesc img、iframe 使用a元素链接到校长描述
    target link 多余属性,被省略
    nohref area 多余属性,被省略
    profile head 多余属性,被省略
    version html 多余属性,被省略
    name img id
    scheme meta 只为某个表单域使用scheme
    archive、chlassid、codebose、codetype、declare、standby object 使用data与typc属性类调用插件。需要使用这些属性来设置参数时,使用param属性
    valuetype、type param 使用name与value属性,不声明之的MIME类型
    axis、abbr td、th 使用以明确简洁的文字开头、后跟详述文字的形式。可以对更详细内容使用title属性,来使单元格的内容变得简短
    scope td 在被链接的资源的中使用HTTP Content-type头元素
    align caption、input、legend、div、h1、h2、h3、h4、h5、h6、p 使用CSS样式表替代
    alink、link、text、vlink、background、bgcolor body 使用CSS样式表替代
    align、bgcolor、border、cellpadding、cellspacing、frame、rules、width table 使用CSS样式表替代
    align、char、charoff、height、nowrap、valign tbody、thead、tfoot 使用CSS样式表替代
    align、bgcolor、char、charoff、height、nowrap、valign、width td、th 使用CSS样式表替代
    align、bgcolor、char、charoff、valign tr 使用CSS样式表替代
    align、char、charoff、valign、width col、colgroup 使用CSS样式表替代
    align、border、hspace、vspace object 使用CSS样式表替代
    clear br 使用CSS样式表替代
    compace、type ol、ul、li 使用CSS样式表替代
    compace dl 使用CSS样式表替代
    compace menu 使用CSS样式表替代
    width pre 使用CSS样式表替代
    align、hspace、vspace img 使用CSS样式表替代
    align、noshade、size、width hr 使用CSS样式表替代
    align、frameborder、scrolling、marginheight、marginwidth iframe 使用CSS样式表替代
    autosubmit menu  

    全局属性

    HTML5中新增了一个“全局属性”的概念,所谓全局属性,是指可以对任何元素都使用的属性。

    • contentEditable
      该属性允许用户编辑元素中的内容,其中该元素必须是可获得鼠标焦点的元素,该属性还具有继承性,没设置该属性的子元素继承父元素的属性。
    • designMode
      该属性置顶整个页面是否可编辑,它只能在脚本中设置on或off,但设置为on时,整个页面支持contentEditable属性的元素都可编辑;
    • hidden
      所有元素均允许使用一个hidden的属性,该属性通知浏览器不渲染该元素,使该元素处于不可见状态,但元素在Dom中存在;
    • spellcheck
      拼写检查,但当元素被设为readOnly或disabled,则不拼写检查;
    • tabindex
      tab键遍历顺序;但它还有一个妙用:当元素不支持获得焦点,可以添加tabindex属性,如果不想tab键获得焦点,可以把值设置为-1即可;
  • 相关阅读:
    8.6 First_value和Last_value
    iOS_第3方类库_側滑选项卡SlideSwitchView
    公开的函数把函数作为參数
    .NET 框架简单介绍
    HDU-3577-Fast Arrangement-区间更新
    拥抱PBO(基于项目的组织)聚焦核心价值创造
    一个使用sbt编译的JNI C++ 的模板
    BestCoder Round #1
    饭统网倒闭:不创新、不放权就是作死 .
    【SSH 基础】浅谈Hibernate关系映射(3)
  • 原文地址:https://www.cnblogs.com/zhaiqianfeng/p/4621654.html
Copyright © 2011-2022 走看看