django加载html5 !DOCTYPE html 的css不生效
2018-03-28 23:06
489 查看
[align=center]django加载html5(<!DOCTYPE html>)的css不生效[/align] html5是规范前面混乱的浏览器格式而诞生的标准,它之前还有xhtml(html+xml),但是xhtml不兼容旧版的html,并要求浏览器强制验证新规范,导致这种规范没人喜欢用。html5还好兼容html4和之前的网页。 <!DOCTYPE html>是html5的声明样式,第一行有<!DOCTYPE html>说明网页采用html5的格式。 之前从来没有注意过这个标签,在apache服务器上运行时,有没有<!DOCTYPE html>对于网页效果没有影响(或者是我没注意到或没有遇到),但是用django运行网页时,出现了网页的样式加载不出来的情况。最明显的时jquery-ui加载不出来。 一开始试着在apache上做相同的配置,结果apache能加载样式,说明问题在django上,尝试配置static路径等方法,排除一个个可能性,通过浏览器开发页面检查网络加载情况,发现css文件加载正常,但是图片等不加载,怀疑时图片的相对路径不对,又改setting.py的设置,最后干脆自己做一个最简单的html+css网页: <html><head><meta charset="utf-8"><link href="../css/test.css" rel="stylesheet"></head><body><p>这是一些文本。</p></body></html> /* test.css----------------------------------*/body { background-image: url("images/ui-icons_444444_256x240.png");} 还在test.css的同级路径建立一个image目录,存放ui-icons_444444_256x240.png图, 结果测试正常。 说明之前判断的相对路径加载受限问题不存在,django可以加载相对路径表示的静态文件。 排除一切问题,就剩百度说的去掉<!DOCTYPE html>标签了。 结果发现去掉<!DOCTYPE html>标签就好了。 找到一个相对合理的解释:99%的页面都含有HTML错误, DOCTYPE后面写html会按照标准模式进行渲染,所以会报错不写html会用其它模式进行渲染,比如混杂模式,所以可能具有一定的容错https://segmentfault.com/q/1010000006930039 作者:知乎用户 链接:https://www.zhihu.com/question/19818208/answer/13430829 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 在HTML的早期发展中,W3C成立之前,很多标准的制定都是在浏览器的开发者们互相讨论的情况下完成的,比如HTML 2.0, 3.2直到4.0, 4.01,这些标准大部分都是所谓的retro-spec,即先有实现后有标准。在这种情况下,HTML标准不是很规范,浏览器也对HTML页面中的错误相当宽容。这反过来又导致了HTML作者写出了大量的含有错误的HTML页面。据说,时至今日web上99%的页面都含有HTML错误。W3C随后意识到了这个问题,并认为这是互联网的一个基础性问题,应该加以解决。为了规范HTML,W3C结合XML制定了XHTML 1.0标准,这个标准没有增加任何新的tag,只是按照XML的要求来规范HTML,并定义了一个新的MIME type,application/xhtml+xml。W3C的初衷是对这个MIME type浏览器要实行强错误检查,既如果页面有HTML错误,就要显示错误信息。但是由于已有的web页面中已经有了大量的错误,很多开发者拒绝使用新的MIME type。W3C不得已,在XHTML 1.0的标准之后加了一个附录C,允许开发者使用XHTML语法来写页面,同时使用旧的MIME type,application/html,来分发页面。这个旧的MIME type不会触发浏览器的强错误检查。这就是我们今天看到的情况,很多网站宣称自己遵守XHTML 1.0标准,那只不过是说,他的页面中用了XHTML语法,但并不能保证完全没有错误。要验证XHTML有没有真正起效,需要查看web服务器使用哪种MIME type来分发页面的。 W3C随后在XHTML 1.1中取消了附录C,即使用XHTML 1.1标准的页面必须用新的MIME type来分发。于是这个标准并没有很多人采用。这种情况同样发生在尚未完成的XHTML 2.0身上,它要求强错误检查,于是没有人采用。XHTML的故事也告诉我们,有时候先有标准再来实现,是行不通的。 有了XHTML的教训,WHAT Working Group和W3C在制定下一代HTML标准,也就是HTML5的时候,就将向后兼容作为了一个很重要的原则。HTML5确实引入了许多新的特性,但是它最重要的一个特性是,不会break已有的网页。你可以将任何已有的网页的第一行改成<!DOCTYPE html>,它就成也一个HTML5页面,并且可以照样在浏览器里正常的展示。 https://www.cnblogs.com/shizhengwen/p/6622071.html 常用的 DOCTYPE 声明HTML 5<!DOCTYPE html>HTML 4.01 Strict该 DTD 包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">HTML 4.01 Transitional该 DTD 包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">HTML 4.01 Frameset该 DTD 等同于 HTML 4.01 Transitional,但允许框架集内容。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">XHTML 1.0 Strict该 DTD 包含所有 HTML 元素和属性,但不包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。必须以格式正确的 XML 来编写标记。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">XHTML 1.0 Transitional该 DTD 包含所有 HTML 元素和属性,包括展示性的和弃用的元素(比如 font)。不允许框架集(Framesets)。必须以格式正确的 XML 来编写标记。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">XHTML 1.0 Frameset该 DTD 等同于 XHTML 1.0 Transitional,但允许框架集内容。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">XHTML 1.1该 DTD 等同于 XHTML 1.0 Strict,但允许添加模型(例如提供对东亚语系的 ruby 支持)。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> |
相关文章推荐
- django 项目的html加载css文件
- django html 加载静态 js css(windows) pycharm
- html,css,js加载顺序
- Django开发(五)——显示图片,加载css,js等静态文件
- 开始专注于Python/Django/HTML/CSS/Javascript/jQuery
- Web 建站技术中,HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、ASP.NET、Web Services 是什么?
- 建站有很多技术,如 HTML、HTML5、XHTML、CSS、SQL、JavaScript、PHP、http://ASP.NET、Web Services、浏览器脚本、服务器脚本等。它们的区别是什么?新手一点不懂,想理清所有这些技术之间的关系和应用范围。
- thinkphp 中html标签加载css,img,script的路径问题
- bootcss 通过css全局样式将html设置为html5文档样式
- IOS开发(7)WKWebView加载本地HTML、CSS、JS文件JS(解决html内访问其他资源路径问题)
- ios UIWebView 加载本地html,js,css文件的问题
- Django制作HTML网页并加载样式
- HTML+CSS实现页面加载(变灰显示请稍等、页面控件不可用)
- html、css、js文件加载顺序及执行情况
- html,css,js加载顺序
- HTML外部引用CSS文件不生效原因分析及解决办法
- HTML加载CSS文件
- [HTML] Change an HTML5 input's placeholder color with CSS
- 浏览器加载和渲染html的顺序-css渲染效率的探究
- django 解决css,js文件304导致无法加载显示问题