什么“<html xmlns =”http://www.w3.org/1999/xhtml“>”呢?
我无法相信我的网站正在发生什么。 当我添加这一行时:
<html xmlns="http://www.w3.org/1999/xhtml"> <!DOCTYPE html> <html> <head>
一切工作正常。 而当我不这样做的时候,CSS“混乱”了,一切都变了,布局变得“丑陋”了。
这条线如何解决所有的问题?
你在用XHTML混合HTML 。
通常使用<!DOCTYPE>
声明来区分HTMLish语言(在本例中为HTML或XHTML)的版本。
不同的标记语言将有不同的performance。 我最喜欢的例子是height:100%
。 在浏览器中查看以下内容:
XHTML
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <style type="text/css"> table { height:100%;background:yellow; } </style> </head> <body> <table> <tbody> <tr><td>How tall is this?</td></tr> </tbody> </table> </body> </html>
…并将其与以下内容进行比较:(注意<!DOCTYPE>
声明的显着缺失)
HTML(怪癖模式)
<html> <head> <style type="text/css"> table { height:100%;background:yellow; } </style> </head> <body> <table> <tbody> <tr><td>How tall is this?</td></tr> </tbody> </table> </body> </html>
您会注意到表格的高度差别很大,两个文档之间的唯一区别就是标记的types!
这很好…现在, <html xmlns="http://www.w3.org/1999/xhtml">
做什么的?
这并不能回答你的问题。 从技术上讲, xmlns
属性被XHTML文档的根元素使用:(根据维基百科 )
XHTML文档的根元素必须是html,并且必须包含一个xmlns属性以将其与XHTML名称空间相关联。
你知道,理解XHTML不是HTML而是XML是非常重要的 – 这是一个非常不同的生物。 (ok,一种不同的生物) xmlns
属性只是文档需要成为有效XML的那些东西之一。 为什么? 因为在这个标准上工作的人这样说)(你可以在维基百科上阅读更多关于XML命名空间的信息,但是我省略了这个信息,因为它与你的问题实际上没有关系!
但是为什么是<html xmlns="http://www.w3.org/1999/xhtml">
修复CSS?
如果像这样构build文档…(如您在评论中所build议的那样)
<html xmlns="http://www.w3.org/1999/xhtml"> <!DOCTYPE html> <html> <head> [...]
…正在修复你的文档,它使我相信你不太了解CSS和HTML(没有冒犯!),事实是没有 <html xmlns="http://www.w3.org/1999/xhtml">
它的行为正常, 而且 <html xmlns="http://www.w3.org/1999/xhtml">
不是 – 你只是觉得这是因为你习惯写无效HTML,因此在怪癖模式下工作。
我提供的上述例子是同样问题的一个例子, 大多数人认为height:100%
应该导致<table>
的高度为整个窗口,并且DOCTYPE
实际上正在打破他们的CSS …但事实并非如此; 相反,他们只是不明白,他们需要添加一个html, body { height:100%; }
html, body { height:100%; }
CSS规则来达到他们想要的效果。
它是一个XML命名空间。 当您使用XHTML 1.0或1.1 doctypes或application / xhtml + xml mimetypes时,它是必需的。
你应该使用HTML5的文档types,那么你不需要它的文本/ HTML。 最好从这样的模板开始:
<!DOCTYPE html> <html> <head> <meta charset=utf-8 /> <title>domcument title</title> <link rel="stylesheet" href="/stylesheet.css" type="text/css" /> </head> <body> <!-- your html content --> <script src="/script.js"></script> </body> </html>
当你把你的Doctype直 – 做和validation你的HTML和你的CSS 。
这通常会解决你的布局问题。
这听起来像你的网站有CSS或JS,依赖于在怪癖模式下运行。 这就是为什么你需要在doctype之上的垃圾来渲染“正确”。 我build议删除说垃圾,然后修复您的CSS + JS实际工作在标准模式; 从长远来看,你会为自己节省很多的痛苦。
The namespace name http://www.w3.org/1999/xhtml is intended for use in various specifications such as: Recommendations: XHTML™ 1.0: The Extensible HyperText Markup Language XHTML Modularization XHTML 1.1 XHTML Basic XHTML Print XHTML+RDFa
在这里检查更多的细节