2011-11-26 37 views
14

如果我只需要较旧的浏览器识别HTML5标签,应该使用哪些标签,Modernizr或流行的HTML5 shiv? 另外,如果我不需要设计HTML5标签的样式,我是否需要浏览器来识别它们?或者只有在向这些标签添加CSS时是必要的?Modernizr vs HTML shiv

谢谢!

+4

您只需要HTML5 shiv即可通过CSS为html5标签添加样式。此外modernizr包括HTML5 shiv所以它是一个超集 – Raynos

+4

我会添加Modernizr是更多检测HTML5 **功能**(如音频格式,CSS样式规则,本地存储...),而不是HTML5标签支持 –

回答

16

html5shiv基本上允许IE识别和设置HTML5元素的样式,而Modernizr提供了同样支持的功能。

所以要回答你的问题HTML5 shiv应该足以识别IE中的HTML5标签。 (注意我在这里说IE,因为这是html5shiv的目标,不知道你说的是什么意思,当你说老浏览器)

对于第二部分,即使你不想风格的HTML5标签,我会建议使用shiv,因为浏览器可能不正确地显示它们,或根本不显示,所以最好是安全的。

+0

伟大的,我想知道即使我没有设计风格的标签,如果有必要的话。太糟糕了,它只适用于IE浏览器(当我说旧版浏览器我的意思是Firefox 1或2,或任何版本的Chrome/Opera不支持HTML5) – federicot

+0

找到FF1这些天不是很常见;) – omarello

+0

You根据我在[维基百科]中阅读的内容(http://en.wikipedia.org/wiki/Modernizr#What_Modernizr_doesn.27t_do),这是错误的。 – Shimmy

11

HTML5 Shiv较小,除非您需要Modernizr的某些检测功能,否则请使用shiv。

文件的大小非常重要,因为它始终在html文档的头部,并阻止下载其他资源,直到完全执行。

,因为它只需要旧的浏览器,我使用下面的代码:

<!--[if lt IE 9]> 
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script> 
<![endif]--> 

您可以删除不使用的HTML标记,但随后你将无法使用该文件在托管谷歌。

+0

这_detection_提供给我什么?我只写html和Js。并且它假设将样式应用于所有元素(包括html5的元素),那么“检测”是什么意思?你能举个例子吗? –

1

如果浏览器支持特定的CSS或HTML5功能,您可以使用Modernizr加载特定的文件。

让我们说,如果浏览器不支持“画布”作为HTML5元素和“fontface”作为CSS3属性

Modernizr.load({ 
test: Modernizr.fontface && Modernizr.canvas, // Test if the browser supports it or not 
yep : '/path-to/html5-css3-attributes.css', // If browser supports it, load this file 
nope: '/path-to/old-css-attributes.css' // If NOT, load this instead 
}); 

您可以使用.js文件也文件路径条件。