HTML5是万维网的核心语言、标准通用标记语言下的一个应用超文本标记语言HTML)的第五次重大修改,是继HTML4.01和XHTML1.0之后的超文本标记语言的最新版本。它是由一群自由思想者组成的团队设计出来,并最终实现多媒体支持、交互性、更加智能的表单,以及更好的语义化标记。

HTML5并不仅仅是HTML规范的最新版本,而且是一系列用来制作现代富Web内容的相关技术的总称,其中最重要的三项技术分别为:HTML5核心规范(标签元素)、CSS(层叠样式表第三代)和JavaScript。

一、HTML5发展历史

1993年HTML首次以因特网草案的形式发布,然后经历了2.0、3.2、4.0,一直到1999年的HTML4.01版本稳定下来。由于发展缓慢,逐渐的被更加严格的XHTML所取代。

XHTML是基于XML、致力于实现更加严格并且统一的编码规范的HTML版本,解决之前HTML4.01版本时,由于编码不规范导致浏览器的各种古怪行为,所以Web开发者对XHTML极大地拥护。XHTML极大的好处就是强迫开发者养成良好的编码习惯,放弃HTML凌乱的写法,最终降低浏览器解析页面的难度,方便移植到更多平台。

可是,越是想往好的方面发展,往往可能带来的是毁灭性的灾难,世间万物就是如此。XHTML2.0规范了更严格的错误处理规则,强制要求浏览器拒绝无效的XHTML2页面,强制Web开发者写出绝对正确规范的代码,同时不得向下兼容,摒弃HTML一流的怪异行为和编码习惯。按理说,取其精华去其糟粕是好事,但是这样一来熟亿的页面无法兼容,Web开发者的难度又被加大,并且制定这个标准又太过久远,最终被抛弃。

2008年W3C发布了HTML5的工作草案,2009年停止了XHTML2.0的计划,又过去大概一年,HTML5规范进一步解决了诸多非常实际的问题,各大浏览器厂商开始对旗下的产品进行升级,以便支持HTML5。这样得益于浏览器的实验反馈,HTML5规范得到了持续的进步和完善,从而迅速融入到Web平台的实质性改进中。

和XHTML2.0不同,制定HTML5规范的一群人并不想挑出以往HTML的各种毛病为其改正,而是尽可能的补全Web开发急需的各种功能。这些功能包括更强大的CSS3、表单验证、音频视频、本地存储、地理定位、绘画(Canvas)、Web通信等等。

二、HTML5功能

1.HTML5核心:这部分主要由W3C官方的规范组成,设计新的语义元素、新的增强的Web表单、音频和视频、以及通过JavaScript绘图的Canvas。这部分大多数主流浏览器均的到很好的支持。

2.曾经的HTML5标准:这部分主要来自最初制定的HTML5规范,其中大多数功能需要JavaScript且支持富Web应用开发。比如:本地数据存储、离线应用和消息传递。

3.非HTML5标准:这部分通常指下一代功能,虽然从未进入HTML标准,但人们还是把它认做HTML5的一部分。这些包括最为常见的CSS3,以及很热门的地理定位。

对于最为常用且实用的部分,基本上主流浏览器都支持的比较好。而那些特殊需求的部分,则需要根据不同的浏览器检测才能知道是否支持自己想要的功能。

三、HTML5的特点

1.向下兼容

HTML5实行“不破坏Web”的原则,也就是说,以往已存在的页面,还可以保持正确的显示。

面对开发者,HTML5规范要求摒弃过去那些编码坏习惯和废弃的标签元素;而面对浏览器厂商,要求他们兼容HTML遗留的而一切,以做到向下兼容。

2.用户至上

HTML5遵循“用户至上”的原则,在出现具体问题时,会把用户放在第一位,其次是开发者,然后是浏览器厂商,最后才是规范制定者。比如:开发者在编码是不严谨导致本该出现警告或错误时,却正常显示了页面。

3.化繁为简

HTML5对比之前的XHTML做了大量的简化工作,具体如下:

(1)以浏览器的原生能力代替复杂的JavaScript;

(2)DOCTYPE被简化到极致;

(3)字符集声明被简化;

(4)简单强大的API。

4.无插件范式

在HTML5之前,很多功能只能通过插件或hack(如绘图API)来实现,但HTML5原生提供了这些支持。使用插件有很多问题,具体如下:

(1)插件安装容易失败;

(2)插件被浏览器或软件禁用屏蔽(如Flash插件);

(3)插件经常会被爆出漏洞被利用攻击;

(4)插件不容易与HTML文档其他部分集成(比如整体透明化等)。

5.访问通用性

(1)可访问性:比如更加利于残障人士的阅读方案;

(2)媒体中立:比如HTML5的媒体播放在不同设别或不同平台均能正常运行;

(3)支持所有语种:比如新元素<ruby>。

6.引入语义

HTML5引入了一些用来区分不同含义和不同内容的标记元素。这种方式极大的提供的编码人员的可读性和代码区域查询的便利性。

7.引入原生媒体支持

HTML5的一次大改进就是支持在浏览器中直接播放视频和音频文件,以前都需要插件才能实现此类功能。

8.引入可编程内容

HTML5最大的变化就是引入了需要通过JavaScript编程才能完成的各种效果,而这些很多都是HTML5原生的。那么现在HTML5可以理解为HTML+CSS+JavaScript的总称。

HTML5之概述的更多相关文章

  1. HTML5 Canvas 概述

    本文中,我们将探索如何使用HTML5的Canvas API.Canvas API很酷,我们可以通过它来动态创建生成和展示图形,图表,图像以及动画.本文将使用渲染API(rendering API)的基 ...

  2. HTML5地理位置概述和地理位置对象的详解

    一.地理位置 经度  :   南北极的连接线 纬度  :   东西连接的线   二.位置信息从何而来 IP地址 GPS全球定位系统 Wi-Fi无线网络 基站         三.地理位置对象(navi ...

  3. HTML5+CSS3学习笔记(一) 概述

    HTML5+CSS3概述      HTML5和CSS3不仅仅是两项新的Web技术标准,更代表了下一代HTML和CSS技术.虽然HTML5的标准规范还没有正式发布,但是未来的发展前景已经可以预见,那就 ...

  4. HTML5 程序设计 - 使用HTML5 Canvas API

    请你跟着本篇示例代码实现每个示例,30分钟后,你会高喊:“HTML5 Canvas?!在哥面前,那都不是事儿!” 呵呵.不要被滚动条吓到,很多都是代码和图片.我没有分开写,不过上面给大家提供了目录,方 ...

  5. HTML5+CSS3学习笔记(一)

    HTML5+CSS3概述 HTML5和CSS3不仅仅是两项新的Web技术标准,更代表了下一代HTML和CSS技术.虽然HTML5的标准规范还没有正式发布,但是未来的发展前景已经可以预见,那就是HTML ...

  6. HTML5系列二(标签元素、FileReader、拖放)

    nav元素的使用场合 页面中可以包含多个nav元素,通常情况下头部和尾部都会包含导航,这样提高了可访问性,访客能够清晰的将其辨认出来.nav元素是一个可以用来作为页面导航的链接组:其中的导航元素链接到 ...

  7. HTML5 程序设计笔记(二)

    Canvas API 1.HTML5 Canvas 概述 1.1 历史 Canvas的概念最初是由苹果公司提出的,用于在Mac OS X WebKit中创建控制板部件(dashboard widget ...

  8. HTML5学习笔记:HTML5基于本地存储SQLite的每日工作任务清单程序.[只支持chrome]

    使用环境:Chrome 36.0...+ 技术:HTML5 目的:习练HTML5 功能概述:记录管理每天工作内容,便签清单 HTML5+CSS3呈现UI,JavaScript操作数据库,SQLite存 ...

  9. HTML网页设计基础笔记 • 【第1章 HTML5基础】

    全部章节   >>>> 本章目录 1.1 HTML介绍及开发工具 1.1.1 HTML 的基本概念 1.1.2 网页 1.1.3 Web 标准 1.1.4 HTML5 与移动互 ...

随机推荐

  1. 关闭ReSharper中的[ Use 'var' ]提示(Disable C# “var” Recommendation in ReSharper)

    ReSharper,确实是个很不错的工具,代码如果写得不规范他会提示,而且可以根据自己公司的需求自定义代码规范. 默认设置的提示已经相当完美,但美中不足就是老提示你用var来代替所有类型. 按以下步骤 ...

  2. 【BZOJ】2019: [Usaco2009 Nov]找工作(spfa)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2019 spfa裸题.....将飞机场的费用变成负,然后spfa找正环就行了 #include < ...

  3. Gabor变换、Gabor滤波器

    D.Gabor 1946年提出 窗口Fourier变换,为了由信号的Fourier变换提取局部信息,引入了时间局部化的窗函数. 由于窗口Fourier变换只依赖于部分时间的信号,所以,现在窗口Four ...

  4. java关键字及含义

    http://blog.csdn.net/hfmbook/article/details/7634385

  5. jenkins配置svn、gradle、ssh

    1.先说下实现的效果,从svn拉取代码.调用gradle编译构建.将构建包分发到部署服务器并备份原来的部署包: 2.直接从http://mirrors.jenkins-ci.org/war/lates ...

  6. flask渲染模板

    Flask自身使用了jinja2模板,可以使用render_template()方法来渲染模板,只需要将模板名和关键字的参数传入. 该渲染模板的模块(views.py)会在 templates 文件夹 ...

  7. C# .net 多线程中集合数据同步

    from:http://www.cnblogs.com/GavinCome/archive/2008/04/09/1145250.html C# .net 多线程中集合数据同步(转) 集合类通常不是线 ...

  8. vmware 虚拟机下 ubuntu 与主机共享锐捷

    一直以来.想要学习 linux ,在 vm 虚拟机下安装了 ubuntu 系统. 可是这个系统并不能上网.原因就是 vm 虚拟机的虚拟网卡会和锐捷冲突.锐捷会检測到多网卡,断开网络,所以不得不禁用 v ...

  9. 第一只python爬虫

    import urllib.request response = urllib.request.urlopen("http://www.baidu.com") html = res ...

  10. mysql查询某天是本年第几周

    SELECT WEEK(date_add('2012-12-31',interval 6 day),2);