html5是规范前面混乱的浏览器格式而诞生的标准,它之前还有xhtml(html+xml),但是
xhtml不兼容旧版的html,并要求浏览器强制验证新规范,导致这种规范没人喜欢用。html5还好兼容html4和之前的网页。
是html5的声明样式,第一行有说明网页采用html5的格式。
之前从来没有注意过这个标签,在apache服务器上运行时,有没有对于网页效果没有影响(或者是我没注意到或没有遇到),但是用django运行网页时,出现了网页的样式加载不出来的情况。最明显的时jquery-ui加载不出来。
一开始试着在apache上做相同的配置,结果apache能加载样式,说明问题在django上,尝试配置static路径等方法,排除一个个可能性,通过浏览器开发页面检查网络加载情况,发现css文件加载正常,但是图片等不加载,怀疑时图片的相对路径不对,又改setting.py的设置,最后干脆自己做一个最简单的html+css网页:
<html>
<head>
<meta charset&#61;"utf-8">
<link href&#61;"../css/test.css" rel&#61;"stylesheet">
head>
<body>
<p>这是一些文本。p>
body>
html>
/* test.css
----------------------------------*/
body {
background-image: url("images/ui-icons_444444_256x240.png");
}
还在test.css的同级路径建立一个image目录&#xff0c;存放
ui-icons_444444_256x240.png图&#xff0c;
结果测试正常。
说明之前判断的相对路径加载受限问题不存在&#xff0c;django可以加载相对路径表示的静态文件。
排除一切问题&#xff0c;就剩百度说的去掉标签了。
结果发现去掉标签就好了。
找到一个相对合理的解释&#xff1a;99%的页面都含有HTML错误&#xff0c;
DOCTYPE后面写html会按照标准模式进行渲染&#xff0c;所以会报错
不写html会用其它模式进行渲染&#xff0c;比如混杂模式&#xff0c;所以可能具有一定的容错
https://segmentfault.com/q/1010000006930039
作者&#xff1a;知乎用户链接&#xff1a;https://www.zhihu.com/question/19818208/answer/13430829来源&#xff1a;知乎著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。在HTML的早期发展中&#xff0c;W3C成立之前&#xff0c;很多标准的制定都是在浏览器的开发者们互相讨论的情况下完成的&#xff0c;比如HTML 2.0, 3.2直到4.0, 4.01&#xff0c;这些标准大部分都是所谓的retro-spec&#xff0c;即先有实现后有标准。在这种情况下&#xff0c;HTML标准不是很规范&#xff0c;浏览器也对HTML页面中的错误相当宽容。这反过来又导致了HTML作者写出了大量的含有错误的HTML页面。据说&#xff0c;时至今日web上99%的页面都含有HTML错误。
W3C随后意识到了这个问题&#xff0c;并认为这是互联网的一个基础性问题&#xff0c;应该加以解决。为了规范HTML&#xff0c;W3C结合XML制定了XHTML 1.0标准&#xff0c;这个标准没有增加任何新的tag&#xff0c;只是按照XML的要求来规范HTML&#xff0c;并定义了一个新的MIME type&#xff0c;application/xhtml&#43;xml。W3C的初衷是对这个MIME type浏览器要实行强错误检查&#xff0c;既如果页面有HTML错误&#xff0c;就要显示错误信息。但是由于已有的web页面中已经有了大量的错误&#xff0c;很多开发者拒绝使用新的MIME type。W3C不得已&#xff0c;在XHTML 1.0的标准之后加了一个附录C&#xff0c;允许开发者使用XHTML语法来写页面&#xff0c;同时使用旧的MIME type&#xff0c;application/html&#xff0c;来分发页面。这个旧的MIME type不会触发浏览器的强错误检查。这就是我们今天看到的情况&#xff0c;很多网站宣称自己遵守XHTML 1.0标准&#xff0c;那只不过是说&#xff0c;他的页面中用了XHTML语法&#xff0c;但并不能保证完全没有错误。要验证XHTML有没有真正起效&#xff0c;需要查看web服务器使用哪种MIME type来分发页面的。
W3C随后在XHTML 1.1中取消了附录C&#xff0c;即使用XHTML 1.1标准的页面必须用新的MIME type来分发。于是这个标准并没有很多人采用。这种情况同样发生在尚未完成的XHTML 2.0身上&#xff0c;它要求强错误检查&#xff0c;于是没有人采用。XHTML的故事也告诉我们&#xff0c;有时候先有标准再来实现&#xff0c;是行不通的。
有了XHTML的教训&#xff0c;WHAT Working Group和W3C在制定下一代HTML标准&#xff0c;也就是HTML5的时候&#xff0c;就将向后兼容作为了一个很重要的原则。HTML5确实引入了许多新的特性&#xff0c;但是它最重要的一个特性是&#xff0c;不会break已有的网页。你可以将任何已有的网页的第一行改成&#xff0c;它就成也一个HTML5页面&#xff0c;并且可以照样在浏览器里正常的展示。
https://www.cnblogs.com/shizhengwen/p/6622071.html常用的 DOCTYPE 声明
HTML 5
HTML 4.01 Strict
该 DTD 包含所有 HTML 元素和属性&#xff0c;但不包括展示性的和弃用的元素&#xff08;比如 font&#xff09;。不允许框架集&#xff08;Framesets&#xff09;。
HTML 4.01 Transitional
该 DTD 包含所有 HTML 元素和属性&#xff0c;包括展示性的和弃用的元素&#xff08;比如 font&#xff09;。不允许框架集&#xff08;Framesets&#xff09;。
HTML 4.01 Frameset
该 DTD 等同于 HTML 4.01 Transitional&#xff0c;但允许框架集内容。
XHTML 1.0 Strict
该 DTD 包含所有 HTML 元素和属性&#xff0c;但不包括展示性的和弃用的元素&#xff08;比如 font&#xff09;。不允许框架集&#xff08;Framesets&#xff09;。必须以格式正确的 XML 来编写标记。
XHTML 1.0 Transitional
该 DTD 包含所有 HTML 元素和属性&#xff0c;包括展示性的和弃用的元素&#xff08;比如 font&#xff09;。不允许框架集&#xff08;Framesets&#xff09;。必须以格式正确的 XML 来编写标记。
XHTML 1.0 Frameset
该 DTD 等同于 XHTML 1.0 Transitional&#xff0c;但允许框架集内容。
XHTML 1.1
该 DTD 等同于 XHTML 1.0 Strict&#xff0c;但允许添加模型&#xff08;例如提供对东亚语系的 ruby 支持&#xff09;。