我无法相信我网站上发生的事情。当我添加这一行时:
<html xmlns="http://www.w3.org/1999/xhtml">
<!DOCTYPE html>
<html>
<head>
一切正常。当我不这样做时,CSS“混乱”,一切都变得不同,布局变得“丑陋”。
这条线如何解决所有问题?!
答案 0 :(得分:80)
通常使用<!DOCTYPE>
声明来区分HTMLish语言的版本(在本例中为HTML或XHTML)。
不同的标记语言的行为会有所不同。我最喜欢的例子是height:100%
。在浏览器中查看以下内容:
<!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>
<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>
您会注意到表格的高度差异很大,两个文档之间的唯一区别就是标记的类型!
<html xmlns="http://www.w3.org/1999/xhtml">
做了什么?但这并不能回答你的问题。从技术上讲,xmlns
属性由XHTML文档的根元素使用:(根据Wikipedia)
XHTML文档的根元素必须是
html
,并且必须包含xmlns
属性才能将其与XHTML命名空间相关联。
你知道,重要的是要理解XHTML不是HTML而是XML - 一个非常不同的生物。 (好吧,一种不同的生物)xmlns
属性只是文档需要有效的XML之一。为什么?因为正在制定标准的人这么说;)(你可以阅读更多关于XML namespaces on Wikipedia的内容,但我省略了这些信息,因为它与你的问题实际上并不相关!)
<html xmlns="http://www.w3.org/1999/xhtml">
修复CSS?如果像这样构建您的文档......(正如您在your comment中建议的那样)
<html xmlns="http://www.w3.org/1999/xhtml">
<!DOCTYPE html>
<html>
<head>
[...]
...正在修复你的文件,它让我相信你对CSS和HTML一无所知(没有冒犯!)而事实是没有 {{1它的行为正常而且与 <html xmlns="http://www.w3.org/1999/xhtml">
它不是 - 而你只是认为它是,因为你习惯于编写无效的HTML并因此在{ {3}}
我提供的上述示例是同一问题的一个例子;大多数人认为<html xmlns="http://www.w3.org/1999/xhtml">
应该导致height:100%
的高度成为整个窗口,并且<table>
实际上正在破坏他们的CSS ......但事实并非如此;相反,他们只是不明白他们需要添加DOCTYPE
CSS规则来实现他们想要的效果。
答案 1 :(得分:23)
它是一个XML命名空间。当您使用XHTML 1.0或1.1 doctypes或application / xhtml + xml mimetypes时,它是必需的。
你应该使用HTML5 doctype,然后你不需要它用于text / 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>
答案 2 :(得分:7)
听起来您的网站有CSS或JS依赖于在怪癖模式下运行。这就是为什么你需要在你的doctype之上的垃圾来“正确”渲染。我建议删除所说的垃圾,然后修复你的CSS + JS实际上在标准模式下工作;从长远来看,你会为自己省去很多痛苦。
答案 3 :(得分:0)
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
点击此处for more detail