我想开始使用一些HTML5标签,但担心它会如何呈现在不支持HTML5的浏览器。 这似乎是html5shiv是I的溶液可以使用浏览器IE <9。
但是,如果浏览器不支持HTML5是什么,而不是IE浏览器? 然后怎样呢? 为什么html5shiv一个IE的事情吗?
我想开始使用一些HTML5标签,但担心它会如何呈现在不支持HTML5的浏览器。 这似乎是html5shiv是I的溶液可以使用浏览器IE <9。
但是,如果浏览器不支持HTML5是什么,而不是IE浏览器? 然后怎样呢? 为什么html5shiv一个IE的事情吗?
首先,要明确,html5shiv只是可以让你可以样式某些HTML5标签( section
, article
等)正确。 它不给浏览器的“HTML5的支持”这个术语的任何更普遍的意义。
考虑到这一点,注意IE <9是唯一的浏览器不允许这些HTML5标签的造型正确,所以这就是为什么html5shiv只适用于他们。
其他浏览器(甚至是很旧的一样的Netscape Communicator 4)仍将正确解析无法识别的标签,并允许CSS适用于他们为你所期望的。
作为zzzzBov在他的回答指出,他们可能没有正确的默认样式(在大多数(全部)的情况下,或者是? display: block
或没有),所以你需要添加那些即使对于非老古董浏览器。 但是这样做的工作在非过时的歌曲浏览器的罚款,而在过时的歌曲,将这些默认样式---或不得以任何方式---只有当你使用html5shiv工作。
为初始值display
的元素的属性是inline
( REF )。 内置的用户代理样式改变的属性,以用于公知的元件值明智; 例如,标题和段落变更为阻塞。
HTML5引入了新的元件,例如标题,脚注,文章和部分(HTML5切片元素)。 由于旧的浏览器不知道他们,他们把这些元素作为内联。 因此,您必须添加CSS规则手动将这些元素:
header, footer, article, section { display: block; }
但随着中提到HTML5的毒刃的故事 :
... Internet Explorer的6-8装作不认识未知元素的问题; 新元素不能抱孩子,是由CSS不受影响
对于IE 6-8的解决方法也该文章中提到:
顺便说一句,如果你想CSS规则适用于IE未知的元素,你只需要做的使用document.createElement(的ElementName)。 这在某种程度上让CSS引擎知道这个名字的元素存在
现在,关于你的问题:该html5shiv使用一些JavaScript技巧,让未知的元素在IE 6-8中设置样式 。 至于如果有必要不支持HTML5,该html5shiv, 其他浏览器,增加了正确渲染HTML5的元素,这样你就不必定义的CSS规则自己(如上所述)所需的默认样式。
需要注意的是html5shiv 不会使浏览器支持HTML5。 例如,它不能使IE7打通过HTML5嵌入视频<video>
标签。
其他浏览器支持非标准的元素简单地设定自己的CSS display
属性:
header,
footer,
article,
section,
...etc... {
display: block;
}
对于旧版本的Firefox和基于WebKit的浏览器(预HTML5),这是所有的必要。
htmlshiv是“IE”的事情,因为IE的某些版本(仍然)缺乏许多HTML5特性。 什么工作在Chrome或其他浏览器的WebKit可能无法在IE浏览器,所以htmlshiv试图给的缺少的功能一个JavaScript适应。 它是一种填充工具,准确的为好。