HTML5背景知识

HTML(Hypertext Markup

Language,超文本标记语言)诞生于20世纪90年代初。1993年或1994年,那时浏览器只有NCSA Mosaic这一种,Web服务器的种类也屈指可数。

HTML的历史

JavaScript出场

JavaScript语言(虽然取了这么一个名字,但是它跟Java程序设计语言基本上没有什么关系)出自一家名为网景的公司。它的出现标志着内嵌在Web浏览器中的客户端脚本程序控制功能的发端。原本是一种静态内容载体的HTML因此变得有点丰富起来。之所以说“有点丰富”,是因为现在我们在浏览器中见到的这种复杂交互方式是经过一段时间的发展之后才形成的。

JavaScript并非HTML规范核心的组成部分,然而Web浏览器、HTML和JavaScript之间是如此紧密,以至于根本无法将它们分开讨论。HTML5规范假定可以使用JavaScript,而且要想使用HTML5中新增的一些最为引人注目的特性也需要用到JavaScript。

出自一家名为网景的公司。它的出现标志着内嵌在Web浏览器中的客户端脚本程序控制功能的发端。原本是一种静态内容载体的HTML因此变得有点丰富起来。之所以说“有点丰富”,是因为现在我们在浏览器中见到的这种复杂交互方式是经过一段时间的发展之后才形成的。

JavaScript并非HTML规范核心的组成部分,然而Web浏览器、HTML和JavaScript之间的关系是如此紧密,以至于根本无法将它们分开讨论。HTML5规范假定可以使用JavaScript,而且要想使用HTML5中新增的一些最为引人注目的特性也需要用到JavaScript。

浏览器战争的结束

浏览器市场也有过激烈的竞争。主要的角逐者是微软和网景,它们都把在自己的浏览器中添加一些独有的特性当做竞争手段。其如意算盘是这样打的:诱人的专有特性会诱使开发人员制作出只能在特定浏览器上使用的内容,而诱人的内容又会诱使用户对能提供这种内容的浏览器青睐有加,由此市场霸业可成。

可惜人算不如天算。这样做的结果是Web开发人员要么只使用那些所有浏览器都有的特性,要么煞费苦心地想些变通办法来使用各款浏览器中勉强相当的那些特性。这不啻为一种煎熬,而且其后遗症直到现在仍然在影响Web开发。

微软用免费提供IE来与网景收费的Navigator抢生意,这一招儿后来被认定违反垄断法。很多人指责微软是网景垮台的罪魁祸首。这一指控或许不无道理,不过在我这个曾在那段时期为网景做过大约18个月顾问的人看来,我从没见过像它那样一根筋地自残的公司。有些公司注定要成为别人的前车之鉴,网景就是其中之一。

浏览器战争以网景倒台及微软受到惩处结束,为基于标准的网络浏览奠定了基础。HTML规范有了改进,遵从这个规范成了准则。现在的浏览器需要凭遵守标准的程度来竞争。这是一次天翻地覆的转折,开发人员和用户均受益于此。

插件称雄

插件是Web世界的“益虫”。它们可以提供一些单用HTML很难实现的高级特性和丰富内容。有些插件特性如此丰富、部署如此普遍,以至于不少网站只提供用于这种插件的内容。Adobe公司的Flash正是这样一个典型。我经常见到完全用Flash实现的网站。按说这也没什么不妥,不过这就意味着浏览器和HTML除了Flash容器一职外再无他用。

浏览器开发商看插件不顺眼,因为它把控制权转移到了插件开发商手中。HTML5的一大改进就是着力于让浏览器直接处理那些原来要使用Flash的富内容(rich content)。苹果和微软是疏远Flash的两个急先锋。前者的iOS不支持Flash,后者则在Windows8附带的Metro风格的IE正中禁用了Flash。

语义HTML浮出水面

HTML标准的早期版本不太关心将内容的意义与其呈现方式分开。想表示一段文字的重要性,使用一个让文字显示为粗体的HTML元素就是了。把粗体内容与重要内容关联起来是用户的事。这对人类用户来说很容易,却会让自动化工具犯难。自HTML初次亮相以来,对内容进行自动处理日趋重要,人们也越来越致力于分开HTL元素的意义与内容在浏览器中的呈现方式。

发展态势:HTML标准滞后于其使用

制定标准一般都是一个长期过程,像HTML这种应用广泛的技术更是如此。参与方众多,每家都想把新标准往符合自己利益或观点的方向引。而标准并不是法律,标准制定机构害怕分裂甚于一切。因此对于未来的特性和改进该当如何,各方经常陷入旷日持久的讨价还价。

负责制定HTML标准的是W3C(World Wide Web Consortium,万维网联盟)。这是一项棘手的任务。一条提案要花不少时间才能成为标准。而对HTML核心规范的修改则需经过很长时间才会得到批准。

冗长的标准制定过程带来的结果就是W3C总是要多绕一些路,总是在将已经被大家接受的实际做法追认为标准。HTML规范反映的只是几年前关于Web内容的前沿思考。这削弱了HTML标准的重要性,因为真正的革新并非来自W3C,而是来自浏览器和插件。

HTML5简介

HTML5不仅仅是HTML规范的最新版本,它还是一系列用来制作现代富Web内容的总称。最重要的三项技术是HTML5核心规范、CSS(Cascading Style Sheets,层叠样式表)和JavaScript。

HTML5核心规范定义用以标记内容的元素,并明确其含义。CSS可用于控制标记现在用户面前的外貌。JavaScript则可以用来操纵HTML文档的内容以及响应用户的操作,此外想使用HTML5新增元素的一些为编程目的设计的特性也需要用到JavaScript。

有些人(那些挑剔、执拗、爱钻牛角尖的人)会说HTML5所指的只是HTML元素。别管他们。这些人看不出Web内容的本质所发生的根本性变化。用于网页的各种技术之间的关联已经变得如此紧密,以致于需要通晓这些技术才能制作Web内容。如果只使用HTML元素,不用CSS,这样制作出来的内容会让用户觉得不便阅读。如果用了HTML和CSS,但不用JavaScript,那就无法为用户的操作提供即时反馈,也无法使用HTML5中的一些高级特性。

新标准

为了应对漫长的标准化过程以及标准落后于常见用法的情况,HTML5及其相关技术是作为一系列小型标准而制定的。其中有些标准只有区区几页,涉及的只是某项特性中一个高度细化的方面。当然,其他一些标准仍然有密密麻麻的几百页,涵盖了相关功能的所有方面。

这样做的目的是让较小的团体可以合作设计和将对他们较为重要的特性标准化,争议较少的特性可以先标准化,不必受围绕其他特性发生的争论的拖累。

这个办法有利也有弊。好处是可以加快标准制定步伐。主要的弊端在于难以全面掌握制定中的各个标准的情况以及这些标准之间的关系。技术规范的质量也有所下降。有些标准中存在着一些歧义,致使浏览器中的实现出现了不一致的情况。

最大的不足之处大概要算没有一条可用来评估HTML5达标情况的基准线。我们现在还处于初始阶段,但是不能指望用户可能用到的所有浏览器都实现了要用的特性。因此采用HTML5中的特性是件复杂的事情,需要仔细评估相关标准得到支持的情况。W3C公布过一个正式的HTML5徽标,但是它并不代表对HTML5标准及相关技术的全面支持。

引入原生多媒体支持

HTML5的一大改进就是支持在浏览器中直接播放视频和音频文件(也就是说不借助于插件)。这是W3C对插件风靡现象的一种反应。原生(native)多媒体支持再结合其他HTML特性可望大有作为。

引入可编程内容

HTML5最大的变化之一是添加了canvas元素。这个元素是对插件现象的另一反应,它提供了一个通用的绘图平面,开发人员可以用它完成一些通常用Adobe

Flash来完成的任务。

这个特性之所以重要,部分原因在于要使用canvas元素就必须用到JavaScript。编程从而成了HTML文档中第一层次的事情,这是一个重大转变。

引入语义Wvb

HTML5引入了一些用来分开元素的含义和内容呈现方式的特性和规则。这是HTML5中的一个重要概念,它标志着HTML在走向成熟的道路上又迈上了一个新台阶,反映出制作和使用HTML内容的方式的多样性。这个变化(它逐步体现在之前的HTML版本中)稍稍增加了Web开发者的负担,这是因为开发者需要先标记内容然后再定义其呈现方式。不过有些实用的新改进可以减轻这种负担。

HTML5现况

HTML5的核心标准目前仍在制定过程中,一时完成不了。不过,标准正式出炉还得等上好些年,而最终版本与目前版本可能出入不大。

浏览器对HTML5的支持情况

最流行的那些浏览器都已经实现了许多HTML特性。然而,不是每款浏览器都支持所有的特性。在把某个特性用到实际项目之前,应该先核查一下浏览器是否支持这个特性。有些浏览器(例如Chrome和Firefox)的升级近乎持续不断。考虑到HTML标准的分散本性,使用Modernizr(http://www.modernizr.com) 之类的JavaScript库检查特性是可行的。使用Modernizr,可以用编程的方式判断用户使用的浏览器是否支持关键的HTML特性,籍此可以决定在文档中应该使用哪些特性。

习惯未雨绸缪的读者可以参考一下When Can I

Use?网站(http:/caniuse.com)。

上面提供了浏览器的支持情况和采用率方面的详细信息,并且勤于修订。

网站对HTML5的支持情况

用到HTML5特性的网站日益增多。其中有些属于示范性网站,是用来演示HTML特性的。但是能利用浏览器对HTML5的支持的实用型网站也越来越多。YouTube就是一个典型,它现在已经提供让浏览器直接播放的视频——当然,它还为较老的浏览器提供Flash视频。

HTML5背景知识的更多相关文章

  1. HTML5元素背景知识

    目录 HTML5元素背景知识 语义与呈现分离 元素选用原则 少亦可为多 别误用元素 具体为佳,一以贯之 对用户不要想当然 元素说明体例 ol元素 元素速览 文档和元数据元素 文档和元数据元素 文本元素 ...

  2. .NET同步与异步之相关背景知识(六)

    在之前的五篇随笔中,已经介绍了.NET 类库中实现并行的常见方式及其基本用法,当然.这些基本用法远远不能覆盖所有,也只能作为一个引子出现在这里.以下是前五篇随笔的目录: .NET 同步与异步之封装成T ...

  3. 使用按钮控制HTML5背景音乐开关

    <!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <meta name ...

  4. Mozilla研究—深入理解mozilla所需的背景知识

    mozilla是一个以浏览器为中心的软件平台,它在我们平台中占有重要地位.我们用它来实现WEB浏览器.WAP浏览器.邮件系统.电子书和帮助阅读器等应用程序.为此,我最近花了不少时间去阅读mozilla ...

  5. 第01讲- Android背景知识

    第01讲Android背景知识 Android是基于Linux系统 Android系统框图 : 第一.操作系统层(OS) 第二.各种库(Libraries)和Android 运行环境(RunTime) ...

  6. word2vec 中的数学原理具体解释(三)背景知识

      word2vec 是 Google 于 2013 年开源推出的一个用于获取 word vector 的工具包,它简单.高效,因此引起了非常多人的关注.因为 word2vec 的作者 Tomas M ...

  7. Tomcat(一):背景知识和安装tomcat

    Tomcat系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 1. 基础背景知识 1.1 java和jdk概念 无论是何种程序,要能在计算机 ...

  8. jenkins X实践系列(1) —— 背景知识

    本文介绍jenkins X(以下简称jx)相关的背景技术. jenkins X 简介 Jenkins X 是一个高度集成化的CI/CD平台,基于Jenkins和Kubernetes实现,旨在解决微服务 ...

  9. {Python之进程} 背景知识 什么是进程 进程调度 并发与并行 同步\异步\阻塞\非阻塞 进程的创建与结束 multiprocess模块 进程池和mutiprocess.Poll

    Python之进程 进程 本节目录 一 背景知识 二 什么是进程 三 进程调度 四 并发与并行 五 同步\异步\阻塞\非阻塞 六 进程的创建与结束 七 multiprocess模块 八 进程池和mut ...

随机推荐

  1. servlet处理跨域请求

    前言 我们要做的是让在一个不在当前项目文件夹的前端页面发送Ajax请求,由一个远程servlet处理 代码 创建一个web工程 导入所需的jar-> servlet-api.jar fastjs ...

  2. Data Leakage in Machine Learning 机器学习训练中的数据泄漏

    refer to:  https://www.kaggle.com/dansbecker/data-leakage There are two main types of leakage: Leaky ...

  3. CPU内部结构域寄存器

    CPU内部结构域寄存器   64位和32位系统区别: 寄存器是CPU内部最基本的存储单元. CPU对外是通过总线(地址.控制.数据)来和外部设备交互的,总线的宽度是8位,同时CPU的寄存器也是8位,那 ...

  4. Node.js 应用全链路追踪技术——[全链路信息获取]

    全链路追踪技术的两个核心要素分别是 全链路信息获取 和 全链路信息存储展示. Node.js 应用也不例外,这里将分成两篇文章进行介绍:第一篇介绍 Node.js 应用全链路信息获取, 第二篇介绍 N ...

  5. 【曹工杂谈】Maven源码调试工程搭建

    Maven源码调试工程搭建 思路 我们前面的文章<[曹工杂谈]Maven和Tomcat能有啥联系呢,都穿打补丁的衣服吗>分析了Maven大体的执行阶段,主要包括三个阶段: 启动类阶段,负责 ...

  6. vue的常见理论问题

    1.什么是 mvvm? mvvm 和 mvc 区别? MVVM 是 Model-View-ViewModel 的缩写.mvvm 是一种设计思想.Model 层代表数据模型,View 代表 UI 组件. ...

  7. 代码注释规范之Doxygen

    1.Doxygen简介 Doxygen是一个程序的文档产生工具,可以将程序中的注释转换成说明文档或者说是API参考手册,从而减少程序员整理文档的时间.当然这里程序中的注释需要遵循一定的规则书写,才能让 ...

  8. Qt 6.0精简WebEngine SerialPort Multimedia等成为半残GUI框架一览

    由于 Qt 集成了大量成熟模块,使之成为 C++ 领域中最好用的开源技术跨平台 GUI 开发框架.基于 Qt 能开发 Windows MacOS 传统桌面或无 GUI 应用程序.Unix/Linux ...

  9. vue+element+echarts柱状图+列表

    前端由vue+element搭建框架,引入vue和element的index.js和css就可以写页面: 页面和js可以echarts官网实例看下都是有的,主要看下如何动态赋值: 柱状图和列表: &l ...

  10. python中模块与包

    #模块与包#在实际项目中,代码的行数可能上万,甚至上几十万,不可能在一个页面内完成,需要多个程序员通力写作#张三,李四,王五......每天收集大家的代码做一个版本,类似乐高积木一样,每个人负责一部分 ...