1.

<style type="text/css">

从前,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的历史与历史遗留问题的更多相关文章

  1. MySQL_产品昨日库存与历史入库历史出库成本_20161124

    产品昨日库存与历史入库历史出库成本 SELECT d.ID,a.*,e.昨日订单额 ,b.昨天入库额,b.历史2天,b.历史3天,b.历史4天,b.历史5天,b.历史6天,b.历史7天,b.历史8天, ...

  2. 芒果TV For Windows10 成长历史 & 迭代历史 & 新闻报道

    芒果TV 是国内领先的基于Windows10操作系统并支持Windows10全系列设备的视频应用和内容服务商. Win10商店版<芒果TV>是湖南快乐阳光互动娱乐传媒有限公司专门为Wind ...

  3. [No000037]操作系统Operating Systems操作系统历史与硬件概况History of OS & Summaries!

    培根:读史使人明智 操作系统的简史 (1955-1965) 计算机非常昂贵,上古神机IBM7094 ,造价在250万美元以上 计算机使用原则:只专注于计算 批处理操作系统(Batch system) ...

  4. Linux系统bash shell之历史命令

    1.相关变量: HISTSIZE: 定义命令历史记录的条数 HISTFILE: 定义命令储存的文件,一般是 ~/.bash_history HISTFILESIZE: 定义了历史文件记录历史的条数 H ...

  5. bash的快捷键、特殊参数、历史命令、相关文件

    bash快捷键 Emacs风格 ctrl+p: 方向键 上 ↑ ctrl+n: 方向键下 ↓ ctrl+b: 方向键 ← alt+f: 光标右移一个单词 ctrl+f :方向键 → alt+b: 光标 ...

  6. 2018-01-15 History in Threads: 火狐插件实现浏览历史按主题显示(树)

    History in Threads似乎是唯一一个业余项目里有确认用户的. 大部分JavaScript源码(300+行)也用了中文命名. 插件功能很简单, 就是根据网页点击顺序生成树, 每个树可以认为 ...

  7. 如何在Maven官网下载历史版本

    如何在Maven官网下载历史版本 历史版本一般会隔一段时间,便找不到,官网会及时显示的是最新版本.不多说,直接进入. https://archive.apache.org/dist/maven/bin ...

  8. [dt]世纪历史长河年代表

    年代口诀 夏商与西周, 东周分两段, 春秋和战国, 一统秦两汉, 三分魏蜀吴, 二晋前后延, 南北朝并列, 隋唐五代传, 宋元明清后, 皇朝至此完. 中国历史长河年代表 参考: 中国历史朝代顺序表.年 ...

  9. bash特性-命令历史命令行编辑

    bash: GUI:Gnome,KDE,XFCE CLI:sh,csh,bash,ksh,tcsh,zsh shell,子shell tree:查看目录树 pstree:查看进程目录树 bash: 1 ...

随机推荐

  1. seafile看不见repo报500错误的解决方法

    环境 seafile-server-6.2.5 centos7.5 1804 现象 seafile服务器所在的VPS没动过,前一天seafile用还好好的,昨天客户端突然不能登录了,显示“服务器内部错 ...

  2. Linux内核中kzalloc函数详解

    **************************************************************************************************** ...

  3. Linux时间子系统之二:表示时间的单位和结构【转】

    本文转载自:http://blog.csdn.net/droidphone/article/details/7979295 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+] ...

  4. 自定义android 音乐通知栏 ——可伸缩扩展

    Android custom notification for music player Example   In this tutorial, you will learn how to creat ...

  5. Getting Started with the Intel Media SDK

    By Gael Hofemeier on March 19, 2015 Follow Gael on Twitter: @GaelHof Media SDK Developer’s Guide Med ...

  6. 用/proc/stat计算cpu的占用率

    转自:http://blog.csdn.net/pppjob/article/details/4060336 在Linux下,CPU利用率分为用户态,系统态和空闲态,分别表示CPU处于用户态执行的时间 ...

  7. maven(一)创建一个maven的web项目

    一.创建项目 1.Eclipse中用Maven创建项目 上图中Next 2.继续Next 3.选maven-archetype-webapp后,next 4.填写相应的信息,Packaged是默认创建 ...

  8. angularjs 获得当前元素属性

    先用 console.log(this)查看下当前被点击元素的 this 属性,然后可以看见里面有个$index属性,该属性指向的就是DOM元素列表中当前被点击的那个DOM的下标,只需要使用this. ...

  9. 【转】Darwin Streaming Server 核心代码分析

    无意中看到了dqzhangp的一篇博客,分析了DSS的核心架构,读完顿时感觉豁然开朗,茅塞顿开,写得非常的鞭辟入里,言简意赅,我想没有相当的功力是写不出这样的文章的,情不自禁转到自己空间来,生怕弄丢了 ...

  10. Code-NFine:变量修改

    ylbtech-Code-NFine:Cookie变量修改 1. NFine.Code返回顶部 1.Operator 1.1.OperatorProvider.cs /**************** ...