HTML5之概述
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之概述的更多相关文章
- HTML5 Canvas 概述
本文中,我们将探索如何使用HTML5的Canvas API.Canvas API很酷,我们可以通过它来动态创建生成和展示图形,图表,图像以及动画.本文将使用渲染API(rendering API)的基 ...
- HTML5地理位置概述和地理位置对象的详解
一.地理位置 经度 : 南北极的连接线 纬度 : 东西连接的线 二.位置信息从何而来 IP地址 GPS全球定位系统 Wi-Fi无线网络 基站 三.地理位置对象(navi ...
- HTML5+CSS3学习笔记(一) 概述
HTML5+CSS3概述 HTML5和CSS3不仅仅是两项新的Web技术标准,更代表了下一代HTML和CSS技术.虽然HTML5的标准规范还没有正式发布,但是未来的发展前景已经可以预见,那就 ...
- HTML5 程序设计 - 使用HTML5 Canvas API
请你跟着本篇示例代码实现每个示例,30分钟后,你会高喊:“HTML5 Canvas?!在哥面前,那都不是事儿!” 呵呵.不要被滚动条吓到,很多都是代码和图片.我没有分开写,不过上面给大家提供了目录,方 ...
- HTML5+CSS3学习笔记(一)
HTML5+CSS3概述 HTML5和CSS3不仅仅是两项新的Web技术标准,更代表了下一代HTML和CSS技术.虽然HTML5的标准规范还没有正式发布,但是未来的发展前景已经可以预见,那就是HTML ...
- HTML5系列二(标签元素、FileReader、拖放)
nav元素的使用场合 页面中可以包含多个nav元素,通常情况下头部和尾部都会包含导航,这样提高了可访问性,访客能够清晰的将其辨认出来.nav元素是一个可以用来作为页面导航的链接组:其中的导航元素链接到 ...
- HTML5 程序设计笔记(二)
Canvas API 1.HTML5 Canvas 概述 1.1 历史 Canvas的概念最初是由苹果公司提出的,用于在Mac OS X WebKit中创建控制板部件(dashboard widget ...
- HTML5学习笔记:HTML5基于本地存储SQLite的每日工作任务清单程序.[只支持chrome]
使用环境:Chrome 36.0...+ 技术:HTML5 目的:习练HTML5 功能概述:记录管理每天工作内容,便签清单 HTML5+CSS3呈现UI,JavaScript操作数据库,SQLite存 ...
- HTML网页设计基础笔记 • 【第1章 HTML5基础】
全部章节 >>>> 本章目录 1.1 HTML介绍及开发工具 1.1.1 HTML 的基本概念 1.1.2 网页 1.1.3 Web 标准 1.1.4 HTML5 与移动互 ...
随机推荐
- 【转】Python 第三方 http 库-Requests 学习
原文地址:http://www.itwhy.org/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/python/python-%E7%AC%AC%E4%B8%89%E6%9 ...
- struts中如何实现国际化,涉及哪些文件?
struts中如何实现国际化,涉及哪些文件? 解答:“国际化”是指一个应用程序在运行时能够根据客户端请求所来自的国家/地区.语言的不同而显示不同的用户界面.Struts框架通过使用<bean:m ...
- RGB565 转换 BMP24
今晚有心情,就做完了BMP16(RGB565) 转换成BMP24 的小程序.其中最关键的地方是: // k,WORD类型,是RGB565 的一个点的数据(可以认为是灰度). r=(k & 0x ...
- Anaconda2+Theano 安装过程中的所有的坑。。。
写在前面的废话 上次搞theano安装还是一年多以前..anaconda才出到1.4,当时的AnacondaCE,直接安装完基本上theano啥的都一套成功.. 今天换了个电脑,重装anaconda, ...
- LeetCode 第 231 题 (Power of Two)
LeetCode 第 231 题 (Power of Two) Given an integer, write a function to determine if it is a power of ...
- 【ask】Recursive process.nextTick detected. This will break in the next version of node. Please use setImmediate for recursive deferral.
1.周五对nodejs tcp长连接服务器框架进行压测,一切开始比较常规(没什么特殊问题). 2.突然手一哆嗦,把压测用的客户端群一起关闭了. 3.这个时候nodejs的服务器爆出了"Cau ...
- css横向 弹性盒子布局的一些属性
<head> <meta charset="utf-8"> <meta name="viewport" content=" ...
- django用户认证系统——注销和页面跳转5
当用户想切换登录账号,或者想退出登录状态时,这时候就需要注销已登录的账号.现在我们来为网站添加注销登录的功能,这个功能 Django 也已经为我们提供,我们只需做一点简单配置. 注销登录 注销登录的视 ...
- cxGrid 使用指南 1
1:cxgrid是应该数据关联的控件,类似dbgrid.2:一般用来查阅表信息,如果要修改的话,直接在上面编辑或添加 非常不方便通常要放几个EDit来对选中的记录进行编辑或添加记录. 因为表一般都有主 ...
- 编写高质量代码--改善python程序的建议(七)
原文发表在我的博客主页,转载请注明出处! 建议三十四:掌握字符串的基本用法 编程有两件事,一件是处理数值,另一件是处理字符串,在商业应用编程来说,处理字符串的代码超过八成,所以需要重点掌握. 首先有个 ...