我简直不敢相信我的网站上发生了什么。当我添加这一行时:
<html xmlns="http://www.w3.org/1999/xhtml">
<!DOCTYPE html>
<html>
<head>
一切都很好。如果我不这样做,CSS就会"一团糟",一切都会变得不同,布局也会变得"丑陋"。
这条线怎么能解决所有的问题?!
您将HTML与XHTML混为一谈。
通常<!DOCTYPE>
声明用于区分HTMLish语言的版本(在本例中为HTML或XHTML(。
不同的标记语言会有不同的表现。我最喜欢的例子是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>
您会注意到表的高度有很大的不同,这两个文档之间唯一的区别就是标记的类型!
太好了。。。现在,<html xmlns="http://www.w3.org/1999/xhtml">
做什么
但这并不能回答你的问题。从技术上讲,XHTML文档的根元素使用xmlns
属性:(根据维基百科(
XHTML文档的根元素必须是
html
,并且必须包含一个xmlns
属性才能将其与XHTML命名空间相关联。
你看,重要的是要理解XHTML不是HTML,而是XML——一个非常不同的生物。(好吧,一种不同的东西(xmlns
属性只是文档需要成为有效XML的内容之一。为什么?因为制定标准的人这么说;((你可以在维基百科上阅读更多关于XML名称空间的信息,但我省略了这些信息,因为它实际上与你的问题无关!(
但是<html xmlns="http://www.w3.org/1999/xhtml">
为什么要修复CSS呢
如果你的文档结构是这样的…(正如你在评论中所建议的(
<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%; }
CSS规则来达到他们想要的效果。
它是一个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>
当你把你的Doctype放直后,做并验证你的html和css
这通常会解决布局问题。
听起来你的网站有CSS或JS,这取决于在怪癖模式下运行。这就是为什么您需要doctype之上的垃圾才能"正确"呈现。我建议删除所说的垃圾,然后修复你的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
查看此处了解更多详细信息