如果有非技术人员问你HTML5是什么你会怎么回答新的HTML规范。。。给浏览器提供了牛逼能力干以前不能干的事。。。确切地说应该是给浏览器规定了许多新的接口标准要求浏览器实现牛逼的功能。。。 这里感谢红枫一叶给浏览器暴露了许多新的接口。。。加了很多新的效果。。。问的人其实并不明白他想问的真正问题回答的人貌似明白但又好像少了点什么。牛逼的能力、新的接口、炫酷的效果首先回答的人自己就是晕晕乎乎。什么是HTML、什么是CSS、什么是DOM、什么是JavaScript大部分的前端开发每天都在用这些但很少会有人去思考一下他们之间的关系。首先HTML的全称是超文本标记语言是一种标记形式的计算机语言。将这种标记语言给专门的解析器就能够解析出一定的界面效果。浏览器就是专门解析这种标记语言的解析器。我们说他最终的效果是在屏幕上展示出特定的界面那么浏览器肯定要把一个个的标记转换成内部的一种数据结构这种数据结构便是DOM元素。比如一个a标签在浏览器内部的世界中就是一个HTMLAnchorElement类型的一个实例。一个HTML文件就好比用超文本标记语言写的一篇文章文章通常是有结构的在浏览器眼里它就是DOM。DOM描述了一系列层次化的节点树。但这时候的DOM还是存在于浏览器内部是C语言编写的随着历史的发展当人们不在满足简单的显示文本对于某些文本需要特殊强调或者给添加特殊格式的需求慢慢的冒了出来。面对人们需要控制显示效果的需求最先想到的也最简单的方式就是加标记。加一些样式控制的标记。这时候就出现了像font、center这种样式控制的标记。但是这样一来所有的标记就会分为两大类一种是说我是什么一种是说我怎么显示。这还不是大问题标记简单但是浏览器要解析标记可就不那么简单了。想一想这样干的话DOM也就要分成两大类一类属于描述元素的DOM节点一类属于描述显示效果的DOM节点。一个DOM节点可能代表一个元素也可能是代表一种显示效果。怎么看都觉得别扭呀。最后人们决定废弃样式标签给元素标签添加一个style特性style特性控制元素的样式最初的样式声明语法肯定很简单。原来的样式标签的特性现在变成了样式特性的语法样式标记变成了样式特性。这样逻辑上就清晰多了。那么问题来了一篇文章如果修辞过多必然会引起读者的反感。如果把元素和显示效果都放在一个文件中必然不利于阅读。如果有10个元素都需要一个效果是不是要把一个style重复写十遍呢父元素的设置效果对子元素有没有影响让不让拼爹。。。。。。。。。类似的问题肯定有很多所以出来了CSS层叠样式表带来了css规则、css选择器、css声明、css属性等这样以来就解决了以上痛点。标记语言这层解决了但是浏览器就不能干坐着玩耍了必然得提供支持。所以浏览器来解析一个静态html文件时遍历整个html文档生成DOM树当所有样式资源加载完毕后浏览器开始构建呈现树。呈现树就是根据一系列css声明经历了层叠之后来确定一个个个DOM元素应该怎么绘制。这时候其实页面上还没有显示任何界面渲染树也是浏览器内存里面的一种数据结构。渲染树完成之后开始进行布局这就好比已经知道一个矩形的宽高现在要在画布量一量该画在哪具体占多大地方。这个过程完了之后就是绘制的过程然后我们便有了我们看到的显示界面了。给标记加点效果的问题解决了历史的车轮又开始前进了。慢慢的人们不再满足简单的显示效果人们希望来点交互。那个时候写HTML的大部分并不懂软件开发开玩笑嘛我一写活动页的你让我用CC干这事的确是高射炮打蚊子——大材小用。那正规军不屑干的事就交给游击队吧这时候网景公司开发出了JavaScript语言那时候的JavaScript根本没有现在这么火一土鳖脚本语言哪像现在这么牛逼哄哄统一宇宙。JavaScript本是运行在浏览器的语言HTML文本是静态的不可能让JavaScript修改静态文件但可以跟浏览器内部打交道。可是这个时候的DOM并不是今天的DOM他们是C对象要么把JavaScript转换成C指令操作这些C对象要么把这些C对象包装成JavaScript原生对象。历史选择了后者这时候也就标志着现代DOM的正式诞生。不过历史有时候会出现倒退历史上总会出现几个奇葩比如IEIE奇葩他全家包括Edge马克思是个江湖骗子但恩格斯是个好同志。自然辩证法与历史唯物主义是好东西。从历史的角度我们可以看到。CSS、DOM、JavaScript的出现于发展最终的源头都在HTML超文本标记语言。人们对web的需求最终都汇集在HTML上。所以只要历史产生新的需求最终的变化都首先发生在HTML规范上。当交互性不能在满足人们需求时web迎来了新的需求webapp。要迎合新的需求首先要改变的就是HTML规范这个时候已有的HTML4.0已经无法满足人们日益增长的需求所以HTML5迎着历史的需求经过八年的艰苦努力终于在2014年正式定稿HTML5肯定是要加入新标签然对于传统HTML而言HTML5算是一个叛逆。所有之前的版本对于JavaScript接口的描述都不过三言两语主要篇幅都用于定义标记与JavaScript相关内容一概交由DOM规范去定义。而HTML5规范则围绕着如何使用新增标记定义了大量JavaScri