html5shiv - 为什么它仅适用于IE浏览器?(html5shiv - why is it

2019-07-29 05:41发布

我想开始使用一些HTML5标签,但担心它会如何呈现在不支持HTML5的浏览器。 这似乎是html5shiv是I的溶液可以使用浏览器IE <9。

但是,如果浏览器不支持HTML5是什么,而不是IE浏览器? 然后怎样呢? 为什么html5shiv一个IE的事情吗?

Answer 1:

首先,要明确,html5shiv只是可以让你可以样式某些HTML5标签( sectionarticle等)正确。 它不给浏览器的“HTML5的支持”这个术语的任何更普遍的意义。

考虑到这一点,注意IE <9是唯一的浏览器不允许这些HTML5标签的造型正确,所以这就是为什么html5shiv只适用于他们。

其他浏览器(甚至是很旧的一样的Netscape Communicator 4)仍将正确解析无法识别的标签,并允许CSS适用于他们为你所期望的。

作为zzzzBov在他的回答指出,他们可能没有正确的默认样式(在大多数(全部)的情况下,或者是? display: block或没有),所以你需要添加那些即使对于非老古董浏览器。 但是这样做的工作在非过时的歌曲浏览器的罚款,而在过时的歌曲,将这些默认样式---或不得以任何方式---只有当你使用html5shiv工作。



Answer 2:

为初始值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>标签。



Answer 3:

其他浏览器支持非标准的元素简单地设定自己的CSS display属性:

header,
footer,
article,
section,
...etc... {
    display: block;
}

对于旧版本的Firefox和基于WebKit的浏览器(预HTML5),这是所有的必要。



Answer 4:

htmlshiv是“IE”的事情,因为IE的某些版本(仍然)缺乏许多HTML5特性。 什么工作在Chrome或其他浏览器的WebKit可能无法在IE浏览器,所以htmlshiv试图给的缺少的功能一个JavaScript适应。 它是一种填充工具,准确的为好。



文章来源: html5shiv - why is it only for IE?