我正在摆脱浏览器兼容性问题。
所以我想出了根据浏览器加载唯一的CSS的想法。
所以说如果用户使用IE,那么只有在加载firefox styleFF时才会加载styleIE.css,等等。
我的问题是它是正确的方法,如果不是应该采取什么谨慎,以避免这种相容性问题。 因为当我为IE解决问题时,它会在我的稳定版FF中打开新问题
答案 0 :(得分:5)
虽然您可能希望使用具有共享样式的常规CSS文件并将其与依赖于浏览器的CSS文件结合使用,但这种情况经常发生。
但事实上,不同浏览器的大多数CSS问题都可以通过使用正确的标记和样式来解决...
答案 1 :(得分:3)
通常它足以创建一个在普通浏览器中看起来很好的样式表,然后创建一个仅IE的补充样式表来修复不兼容性并通过条件注释包含它(尽管IE8 +有点好,IE7通常可以工作):< / p>
<!--[if IE]>
<link rel="stylesheet" href="/ie_sheet.css" type="text/css">
<![endif]-->
由于IE6从一开始就是一个可怕的怪物,它需要自己特定的黑客攻击,你可以为IE6(及更低版本)和IE7(以及更高版本;大部分时间都不需要)包含不同的样式表:< / p>
<!--[if lte IE 6]>
<link rel="stylesheet" href="/ie6_sheet.css" type="text/css">
<![endif]-->
<!--[if gt IE 6]>
<link rel="stylesheet" href="/ie_newer_sheet.css" type="text/css">
<![endif]-->
其他浏览器将这些解析为HTML注释并忽略它们。
另见:conditional comments的详细讨论。
答案 2 :(得分:1)
我使用重置样式表,一个普通的样式表(即适用于所有符合标准的浏览器),然后使用IE特定的样式表来引用各种版本的IE。 IE样式表仅涵盖IE遇到问题的项目。我使用Microsoft conditional comments来包含这些样式表,因此其他浏览器无法读取它们。
答案 3 :(得分:0)
这在道德上是不应受谴责的,但 不太理想。
您可以通过了解更多有关正在发生的事情来解决跨浏览器兼容性问题。
http://hsivonen.iki.fi/doctype/
http://validator.w3.org/
http://jigsaw.w3.org/css-validator/
http://www.positioniseverything.net/explorer.html
答案 4 :(得分:-1)
是的,很多网站都是这样做的。
答案 5 :(得分:-1)
这很好用,唯一要记住的是,每次用户加载页面时,浏览器都必须运行所有条件。因此,只要它不是过多的(每个主要浏览器的每个版本都要检查一次),没有人会注意到。
如果你只有3或4个版本,现在对css进行更改会有点痛苦,但一切都有成本。