如何将某些内容显示到 <=IE6 并与其他浏览器不同?

How to show certain content to <=IE6 and different one to other browsers?

提问人:tomexx 提问时间:12/8/2011 最后编辑:tomexx 更新时间:5/2/2017 访问量:181

问:

如何将某些内容显示到 IE6 + 早期版本,并将其他版本与其他版本不同?有条件的评论可以吗?

谢谢

更新

我只能编辑 <body> 标签中的内容...

HTML Internet Explorer XHTML 跨浏览器

评论

1赞 Rob W 12/8/2011
Is it possible with a conditional comment? 是的
1赞 codeandcloud 12/8/2011
这应该会有所帮助:paulirish.com/2008/......
1赞 Rory McCrossan 12/8/2011
@naveen 发布作为答案,使用 IMO 是最佳做法。

答:

1赞 Shai Mishali 12/8/2011 #1

您可以使用条件注释来仅包含特定浏览器的内容

更多信息请访问:

http://www.quirksmode.org/css/condcom.html

1赞 user319198 12/8/2011 #2

使用 CSS hacks。请参阅以下链接

http://www.webdevout.net/css-hacks

http://paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/

4赞 codeandcloud 12/8/2011 #3

Paul Irish 博客上描述了一个更好的选择。(链接在这里)

基本思想是像这样给你的标签赋类。html

<!--[if lt IE 7 ]> <html class="ie6"> <![endif]-->
<!--[if IE 7 ]>    <html class="ie7"> <![endif]-->
<!--[if IE 8 ]>    <html class="ie8"> <![endif]-->
<!--[if IE 9 ]>    <html class="ie9"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html class=""> <!--<![endif]-->

假设您的页面中有一个标签。例如

<label class="foo">Your browser is IE6!</label>

并且您只想在 IE6 中显示该标签,请执行此操作

label.foo { display: none;}
.ie6 label.foo { display: block; }

这种方法肯定有其优点和缺点

请阅读 Paul Irish 帖子中的所有其他评论,以深入了解该场景。

事实上,博客文章最好的部分通常从博客文章结束的地方开始。
希望这会有所帮助。

评论

0赞 tomexx 12/8/2011
我只能编辑 <body> 标签中的内容......所以可悲的是,这对我不起作用。
1赞 wyz 12/8/2011 #4

我建议你使用特定于 ie 的类,比如 HTML5 boilperplate do:

<!--[if lt IE 7]> <html class="no-js ie6 oldie" lang="en"> <![endif]-->
<!--[if IE 7]>    <html class="no-js ie7 oldie" lang="en"> <![endif]-->
<!--[if IE 8]>    <html class="no-js ie8 oldie" lang="en"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]-->

然后你可以有相应的css来显示/隐藏内容,例如:

.ie6-content: {visible: false;}
.ie6 .ie6-content: {visible: true;}
.content {visible: true;}
.ie6 .content {visible:false}

因此,with 部分仅在 IE6 中可见,而 with 部分在 IE6 中不可见。ie6-contentcontent

评论

0赞 tomexx 12/8/2011
我只能编辑 <body> 标签中的内容......所以可悲的是,这对我不起作用。
0赞 wyz 12/8/2011
@tomexx我认为你可以对身体标签做同样的事情。只需将课程放在身体水平即可。
0赞 user7892745 5/2/2017 #5

条件注释(不幸的是)不会让你的船漂浮起来,因为它们直到 IE 5 才存在。此外,它们在 netscape 上不可用。相反,简单地说,您在内容的末尾放置一个 iframe,以显示您的实际页面内容。

<title>Your websites title</title>
<body style="margin:0px;font-size:0px;width:100%;height:100%;overflow:hidden">
    <h1>heading</h1>
    <p>Body paragraph</p>
    <!--[if gt IE 6]><!-->
    <iframe frameborder="0" width="100%" height="100%" src="main.html" style="position:relative;width:100%;height:100%;background-color:white"></iframe>
    <!--<![endif]-->
    <style language="css" type="text/css">/*<!--*/
        /* put your limited CSS here */
    /*-->*/</style>
</body>

然后,放入下层显示的条件注释,以便 iframe 不会显示在 IE 6 或 IE 5 上。然后,只要 iframe 没有任何文本内容,它甚至在第一个 Internet 浏览器的第一个版本中都是不可见的。

然后,因为没有一个理智的人愿意投入足够的时间、精力和精力来为普通网站提供与 IE5 的兼容性,所以你可以只使用下层显示的条件注释(谢天谢地,在支持 iframe 之前就支持了)。

然后,你可以为浏览器添加一些超级基本的CSS,比如最老版本的Netscape。超级基本的CSS包括颜色和裁剪等内容,并排除了几乎所有酷炫和现代的东西。

当然,我的源代码是世界上第一个网站的源代码。最完整的位可以在这里找到:在CERN。这也是将标题放在头部之外的原因,并且根本不包含任何头部。

因此,此方法将允许您向所有早于 IE 6 的浏览器显示网页的简单替代方案。然后,您可能会问Chrome,Firefox,Opera和其他浏览器的情况如何。好吧,这些浏览器会自动更新。因此,实际上,没有必要将支持扩展到它们的先前版本。

无论如何,上面的布局充其量是笨拙的,但是嘿:它有效。而且,这对我来说已经足够了。