我知道这可归结为一个哲学问题,所以我不打算开始讨论这个话题。但我正在寻找(或其中几个)解决Internet Explorer 6中CSS样式的大多数问题的最佳方法。
我知道this article on forabeautifulweb.com,建议只为IE6用户提供一个通用的简单IE6样式表,其中只有一些基本样式比浏览器默认样式更好。对于我的应用,这不是最好的。
我也知道通过Javascript“修复”IE6的CSS支持的概念,我有点喜欢这个想法。但是我不知道最好的是什么(如果有的话) - 我知道有几个漂浮在野外。 This article by Eric Meyer mentions one,但这是差不多2年前编写的,那么现在是否有更标准的脚本用于此目的?
任何人都可以指向一两个这样的脚本,这些脚本已被证明可以有效地更新IE6的一些处理CSS,使其更像现代浏览器吗?
更新:所有回答的人都试图说服我不要用JS来解决问题 - 我正在堵塞我的耳朵并哼唱。 :)
说真的,我不是在问这个是否使用JS。我们已经决定我们不需要支持IE6,我们不值得花时间尝试为IE6“调试”我们的样式表。此决定基于我们的受众和IE6使用的网站统计信息。
至于所有关于“如果用户没有启用JS会怎么样?”的评论。那么在这种情况下,我们网站上的很多内容无论如何都不会看起来正确,所以这是一个静音点。
我已经实现了Gordon建议的IE7.js,这足以让我们在IE6中完成,但没有什么缺点。
感谢大家的投入。
答案 0 :(得分:3)
如果您想使用JavaScript,可以使用this library:
IE7.js是一个JavaScript库,使Microsoft Internet Explorer的行为类似于符合标准的浏览器。它解决了许多HTML和CSS问题,并使透明PNG在IE5和IE6下正常工作。
还有CSS3Pie,它为浏览器添加了CSS3支持:
PIE使Internet Explorer 6-8能够呈现几个最有用的CSS3装饰功能。
答案 1 :(得分:2)
请不要使用JavaScript来解决问题,只需在样式表中添加一些规则来修复它们......
<link rel="stylesheet" type="text/css" href="normal.css" />
<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="ie6.css" />
<![endif]-->
在ie6.css中,你只是有一些规则可以使样式在IE6中运行,你仍然可以使用普通的样式表,因此你的网站在IE6和普通世界中看起来都是一样的。
答案 2 :(得分:1)
从个人经验来看,ie6可以在几行CSS中修复,并且可以使用firebug / developers工具栏进行一些检查......无需条件注释。
我遇到的大多数问题都是以填充/边距为基础的,而且不是我第一次没有使用最好的方法。
我还发现overflow:hidden
也修复了ie6错误的公平份额。
我建议,使用developers toolbar打开ie6,然后尝试找出问题所在,并考虑一种更好的方法来编写该部分。
就我个人而言,我使用条件评论作为最后的手段。
答案 3 :(得分:1)
Dean Edwards的ie7.js剧本(由Gordon联系)仍然是该领域的最新技术。
至于什么是最好的方法,取决于。 Dean Edwards的脚本修复了很多IE CSS错误,并允许您使用IE 6中根本不支持的多类选择器和子选择器等选择器。
如果您对目标受众中的IE 6用户倾向于启用JavaScript感到高兴,像Dean这样的库可以为您节省大量时间,并允许您通过使用IE的选择器来减少代码6不支持。
但是,您可能仍需要一个IE 6样式表来处理Dean的库无法解决的问题。
最好的解决方案可能是等待微软停止支持IE 6(就像他们使用Mac IE 5一样),因为如果微软不支持它,那么人们期望你这样做是不公平的。我们目前正在hoping for 2014获得该分数。
答案 4 :(得分:0)
通常,您不需要javascript。您可以使用普通的旧CSS。尽管如此,它有助于充分了解hasLayout。
通常,您可以通过提供问题元素布局来修复IE6和7的问题。为此,请为其设置固定的height
或width
,或使用专有的zoom
。
我最喜欢的定位IE浏览器特定版本的方法是使用条件注释添加<div>
作为<body>
的直接子项,让我知道我所在的IE版本({ {3}})。这样,我可以直接针对IE6:
.IE6 div.fubar {
zoom: 1;
}
要记住的另一件事是,在IE6 / 7/8 / Firefox / Safari / Chrome / Opera中实现像素奇偶校验几乎是不可能的,所以如果有些东西在近十年的浏览器中看起来不太合适,你并不总是需要担心它。
like so也有一些关于IE错误的有用提示。
答案 5 :(得分:0)
如果可以避免使用javascript,请不要使用javascript - 您无法保证您的用户已激活JS(如上所述)并且您实际上并不需要它。
要从浏览器(不仅仅是IE)中删除许多不同解释的问题,请使用css-reset样式表。周围有很多漂浮。
更好的是,使用一个CSS框架,它将删除不同浏览器之间的许多问题,并将提供许多有用的类来解决标准问题。
我爱YAML(http://www.yaml.de/en/home.html),然后是蓝图(http://www.blueprintcss.org/),可能还有其他几个。相信我 - 一旦你使用CSS框架,你将永远不想回去。
答案 6 :(得分:-3)
jQuery及其插件最适合IE6问题。试一试!