html5新元素(header,nav,footer,..)在IE中不起作用

问题描述 投票:23回答:7

html5新元素(header,nav,footer,..)在IE中不起作用

html5
7个回答
58
投票

您需要包含HTML5 shiv脚本,以便在旧的IE浏览器中设置HTML5元素的样式:http://code.google.com/p/html5shiv/

要使用,请在CSS上方的元素中包含以下脚本:

<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->

13
投票

你需要使用HTML5 Shim。这是一个detailed explanation为什么需要它。

要使用HTML5 Shim,您只需要在页面的<head>中添加以下所有CSS声明:

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

10
投票

另一种选择是使用Modernizr,其中包括HTML5 Shiv并且还提供HTML5特征检测。

IE Modernizr中的HTML 5元素在JavaScript中运行一个小循环,以启用HTML5(以及abbr)中的各种元素,以便在Internet Explorer中进行样式设置。请注意,这并不意味着它突然使IE支持Audio或Video元素,它只是意味着您可以使用section而不是div并在CSS中设置它们的样式。你也可能想要设置许多这些元素来显示:block;请参阅HTML5 Boilerplate CSS以获取示例。从Modernizr 1.5开始,这个脚本与流行的html5shim / html5shiv库中使用的脚本相同。两者都可以在IE6-8中实现HTML5元素的可打印性,但如果你有超过100kb的css,你可能想要尝试性能。

支持的浏览器我们支持IE6 +,Firefox 3.5 +,Opera 9.6 +,Safari 2 +,Chrome。在移动设备上,我们支持iOS的移动Safari,Android的WebKit浏览器,Opera Mobile,Firefox Mobile,虽然我们仍在进行更多测试,但我们相信我们支持Blackberry 6+。 ~http://modernizr.com/docs/#html5inie

至少以下标签:article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section


1
投票

使用HTML5shiv.js或在HTML条件注释中编写javascript代码。

<!--this condition is only for IE 8 and lesser browsers.-->

<!--[if lte IE 8]> // lte means LESS THAN & EQUAL TO IE8. 

<script>
document.createElement('header'); 
document.createElement('nav'); 
document.createElement('article');
document.createElement('section'); 
document.createElement('aside'); 
document.createElement('footer');
</script>
<style> 
header, nav, article, section, aside, footer{ display:block; } 
</style>

//现在这些元素将支持IE8和更少的浏览器。

或者访问此页面https://tutorial.techaltum.com/html4-vs-html5.html


0
投票

如果你不关心一点代码开销,只需使用内部DIV进行样式设置。

此部分无法通过CSS设置样式,IE <9(无HTML5支持)。即使你在section-tag中放了一个class-attribute。

<section class="section outer">
    <h1>Level1</h1>
    some text
    <section class="section inner">
        <h1>Level2</h1>
        some more text
    </section>
</section>

那是因为IE <9正在杀死未知标签的嵌套。 DOM看起来很疯狂:

 <section class="section outer"></section>
 <h1>Level1</h1>
 some text
 <section class="section inner"></section>
 <h1>Level2</h1>
 some more text
 </section><//section>
 </section><//section>

但是你可以使用DIV作为IE <9-Fallback,如果你不喜欢使用javascript shim。而不是设置SECTION的样式,只需设计内部DIV的样式。

<section>
    <div class="section outer">
        <h1>Level1</h1>
        some text
        <section>
            <div class="section inner">
                <h1>Level2</h1>
                some more text
            </div>
        </section>
    </div>
</section>

因此,您拥有适用于SEO的现代周边HTML5标签,所有样式都由DIV为每个浏览器照常完成。它是完全有效的HTML5,如果禁用javascript仍然有效。


-1
投票

使用下面给出的脚本...它会帮助你.. 对于每个新元素,您希望IE <9识别..add,如下所示:

使用document.createElement( “物品”); (在脚本标记内) 使用document.createElement( “页脚”); (在脚本标记内)

谢谢


-1
投票

更新 - 较新版本的IE确实支持HTML5结构元素,但较新的'main'元素除外。使用包含'main'元素(如normalize)的CSS重置将解决此问题。或者您可以将以下CSS添加到您的项目中:

    main { display: block;}
© www.soinside.com 2019 - 2024. All rights reserved.