我的网站上发生了令我难以置信的事情。当我添加这行代码时:
<html xmlns="http://www.w3.org/1999/xhtml">
<!DOCTYPE html>
<html>
<head>
一切都正常。但是当我不使用时,CSS就会“搞砸”一切,所有东西变得不同,布局变得“丑陋”。
这一行代码怎么可能解决所有问题?!
通常使用<!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的其中一项内容。为什么?因为标准制定者说了这样做 ;) (您可以在Wikipedia上阅读更多关于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,从而在quirks mode下工作。
我提供的上面的例子就是同样问题的一个例子;大多数人认为height:100%
应该导致<table>
的高度是整个窗口,而且DOCTYPE
实际上破坏了他们的CSS...但实际情况并非如此;相反,他们只是不理解需要添加一个html,body { height:100%; }
CSS规则才能实现他们想要的效果。
xmlns
,所以我使用了XHTML来包含它。 - Richard JP Le Guen这是一个XML命名空间。当您使用XHTML 1.0或1.1 doctype或应用程序/ xhtml + xml mime类型时才需要它。
如果您使用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>
看起来您的网站具有依赖于怪异模式运行的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
请点击此处查看更多详情。
<html xmlns="http://www.w3.org/1999/xhtml"> <!DOCTYPE html> <html> <head>
- good_evening<html xmlns="http://www.w3.org/1999/xhtml"> <!DOCTYPE html>
,那么一切都正常工作。但是,如果你的前两行是<!DOCTYPE html> <html>
,那么一切都会出问题?是这样吗?如果是这样,那就不太好了。 - thirtydot