HTML的历史与历史遗留问题
1.
从前,HTML的设计者认为以后应该还会有其他样式,不过如今我们已经醒悟,事实表明,完全可以只使用<style>而不带类型属性(即type是可选的),所有浏览器都知道你指的是CSS。
————《Head First HTML与CSS》P29
2.
<br>
HTML5规范明确指出:使用元素应该完全从元素的语义出发。但是为了大家轻松一点,规范也明确表示:对于某些元素,传统上与其联系在一起的样式也是语义的一部分。........然而许多其它的元素含义却比较含糊,实际上与呈现方式颇有瓜葛,有悖HTML5标准的目标。
————《HTML5权威指南》P126
换行标签我感觉也是历史遗留的问题,但是这个问题又不是很大——因为在HTML中,不同的文本结构本身就是靠换行来区分的,所以“换行”这个效果就如HTML5的规范所说的,样式效果成了语义的一部分。这也是新标准下没有取消这个标签的原因之一吧。
结构需要换行,这并不是遗留问题。这里的结构并不是说代码结构,而是显示的页面结构!这一点千万别搞错了。
3.关于/在void中要不要加的问题。
4.img为什么是inline元素?
根据https://www.zhihu.com/question/25402556/answer/30728140下贺师俊的回答和https://www.zhihu.com/question/20495297下的众多回答,我推测这也是一个历史遗留问题。
目前很多东西还不懂,这个坑先不填。等到我切图熟练、看完HTML5权威指南、CSS权威指南、工作一年左右后,再考虑这个问题。(结合收藏夹中瓶颈一栏的文章一起)
5.HTML的发展历史线
1989-1991:HTML1.0~2.0,页面不好看,不过至少支持超文本,没有人关心表现。
1995:HTML3,漫长的浏览器战争由Netscape和Microsoft打响,受害者是web开发人员。期间每个浏览器公司都在不断增加自己的专用扩展包,试图保持领先。那时通常要写两个单独的web页面,一个用于Netscape浏览器,一个用于Internet Explorer浏览器。
1998:HTML4,浏览器大战终止于万维网协会(World Wide Web Consortium=W3C)之手。结束之后开始推行一个标准计划:将HTML的结构和表现分解到两种语言,负责结构的HTML和负责表现的CSS。
1999:HTML4.01,几乎所有浏览器都能很好地显示内容了。
2001:XML出现,并且与HTML融合为XHTML1.0。由于开发人员更喜欢灵活的HTML改进版,而不是XHTML的严格,变革在酝酿。
2009~2012~未来:HTML5横空出世。
————————《Head First HTML与CSS》P222.
6.HTML与HTML5
<!doctype html>
这里的“html”不再代表某个版本号,而是代表“最新的标准的HTML”,换句话说,以后出了“HTML6”,只要这个规则不变,则到时这样写,浏览器就会认为你在使用“HTML6”而不是HTML5.换句话说,HTML5开始,HTML标准将变成一个“活的标准”,这意味着她会根据需要继续发展和变化,不过不会再有固定的版本号。
你没听错,HTML不会再有版本6、7、8....这也是为什么上面我用双引号把HTML6括起来的原因。制订标准的人已经把这个规范变成了一个活的标准,会随着技术的发展形成相应的文档,所以不再有版本号。你甚至可以不再把她叫做HTML5,因为从现在开始它只是HTML。
为什么会设定成这样的“活标准”呢?这里的关键原因是向后兼容性——向后兼容(Backwards Compatibility)表示我们可以继续向HTML增加新的内容,浏览器(最终)会支持这个新内容,不过她们还会继续支持原来的内容。所以你今天写的HTML页面将会继续正常工作,甚至以后增加了新特性之后页仍然能很好地工作。
如果规范明天改了呢?我该怎么办?
如果你今天编写了稳定可靠的HTML,即使明天规范改变了,比如增加了一个新元素,你还能像以往一样使用你的HTML。是否使用这个新元素由你来决定;如果规范对你之前的工作有所改变,比如改变了一个元素或属性的工作方式,那么浏览器会继续支持你使用的老方式,同时支持新方式,这正是向后兼容的含义。
————————《Head First HTML与CSS》P228
在这我不得不思考,是什么原因导致了要保证向后兼容。在我看来,这是一种妥协的结果。一般情况下,语言的特性最好是经过深思熟虑后、一段时间的实践后再写入规范,变成真正的规范。但在这个过程中,不可避免要涉及到过去的特性。有些特性在过去没有发现弊病加入了规范,然后被写成代码运行,实际环境中,不可能把这些已经运行的代码全部重构,所以后来即使发现了某个特性有问题,也不能在新的语言版本中完全删除,只能是对其进行修补;或者是允许其存在另设一个新特性推广,在以后的历史中慢慢淘汰掉她。不管是用哪种办法,都是对过去特性的一种妥协,也就是“向后兼容”出现的原因。但这两种方法也并不意味着使规范变成像HTML这样的“活规范”(C++就是几年你才进行一次统一的大改),那么这样的动机是什么呢?
HTML的历史与历史遗留问题的更多相关文章
- MySQL_产品昨日库存与历史入库历史出库成本_20161124
产品昨日库存与历史入库历史出库成本 SELECT d.ID,a.*,e.昨日订单额 ,b.昨天入库额,b.历史2天,b.历史3天,b.历史4天,b.历史5天,b.历史6天,b.历史7天,b.历史8天, ...
- 芒果TV For Windows10 成长历史 & 迭代历史 & 新闻报道
芒果TV 是国内领先的基于Windows10操作系统并支持Windows10全系列设备的视频应用和内容服务商. Win10商店版<芒果TV>是湖南快乐阳光互动娱乐传媒有限公司专门为Wind ...
- [No000037]操作系统Operating Systems操作系统历史与硬件概况History of OS & Summaries!
培根:读史使人明智 操作系统的简史 (1955-1965) 计算机非常昂贵,上古神机IBM7094 ,造价在250万美元以上 计算机使用原则:只专注于计算 批处理操作系统(Batch system) ...
- Linux系统bash shell之历史命令
1.相关变量: HISTSIZE: 定义命令历史记录的条数 HISTFILE: 定义命令储存的文件,一般是 ~/.bash_history HISTFILESIZE: 定义了历史文件记录历史的条数 H ...
- bash的快捷键、特殊参数、历史命令、相关文件
bash快捷键 Emacs风格 ctrl+p: 方向键 上 ↑ ctrl+n: 方向键下 ↓ ctrl+b: 方向键 ← alt+f: 光标右移一个单词 ctrl+f :方向键 → alt+b: 光标 ...
- 2018-01-15 History in Threads: 火狐插件实现浏览历史按主题显示(树)
History in Threads似乎是唯一一个业余项目里有确认用户的. 大部分JavaScript源码(300+行)也用了中文命名. 插件功能很简单, 就是根据网页点击顺序生成树, 每个树可以认为 ...
- 如何在Maven官网下载历史版本
如何在Maven官网下载历史版本 历史版本一般会隔一段时间,便找不到,官网会及时显示的是最新版本.不多说,直接进入. https://archive.apache.org/dist/maven/bin ...
- [dt]世纪历史长河年代表
年代口诀 夏商与西周, 东周分两段, 春秋和战国, 一统秦两汉, 三分魏蜀吴, 二晋前后延, 南北朝并列, 隋唐五代传, 宋元明清后, 皇朝至此完. 中国历史长河年代表 参考: 中国历史朝代顺序表.年 ...
- bash特性-命令历史命令行编辑
bash: GUI:Gnome,KDE,XFCE CLI:sh,csh,bash,ksh,tcsh,zsh shell,子shell tree:查看目录树 pstree:查看进程目录树 bash: 1 ...
随机推荐
- Objective-C - - 字符串与数字互相转换
NSString *string = @"123"; // 1.字符串转int int intString = [string intValue]; // 2.int装字符串 NS ...
- oracle:rman恢复----通过时间set until time
试验计划:先做一个0级备份,再创建一个表,插入几条数据,最后删除表,然后通过rman把该表的数据恢复. 试验环境:在归档模式,oracle10.2.0.1 开始试验: 1.rman level 0备份 ...
- hdu 4398 Template Library Management(贪心+stl)
题意:n道题,每道题需要一个模板,现在手头有m个模板(标号1~m),解题的时候,如果没有需要的模板,可以向朋友借,但是用完之后必须在还给朋友一个模板(也就是说保持手头拥有m个模板),求解完n道题最少需 ...
- cassandra解析-log写
db/Keyspace.java 中的 apply 函数 中的 commitLogPosition = CommitLog.instance.add(mutation); 这一句确认是写log的代码. ...
- 关于include,load的几个问题
参考:http://www.network-theory.co.uk/docs/gccintro/gccintro_17.html 1. include的文件在哪找,找不到会如何? 工具: gcc - ...
- sublime text 3 安装vue 语法插件
1.下载https://github.com/vuejs/vue-syntax-highlight,点击这里也可以下载压缩包 2.解压到C:\Users\***\AppData\Roaming\Sub ...
- [SHOI 2015] 脑洞治疗仪
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4592 [算法] 对于操作1 , 我们首先查询区间[l0 , r0]中有多少个1 , ...
- MYSQL数据库学习----MYSQL数据类型
一切数据在计算中都是以二进制形式存储,而8位二进制数就表示1个字节. 通常我们说一种数据类型占多少字节,就是说这种数据类型可以表示多少位的二进制数,同时二进制数可以转换为十进制数,进而得到这种数据类型 ...
- CoreGpaphics
CoreGpaphics基本应用 CGAffineTransformMake开头的函数 是基于最初始的位置来变化的 带有CGAffineTransform参数是基于CGAffineTransform的 ...
- gulp 实现 js、css,img 合并和压缩(转)
前提条件,知道如何安装nodejs.gulp,这里不做介绍,可以自行google 实现此功能需要安装的gulp工具有如下 npm install gulp-htmlmin gulp-imagemin ...