【问题标题】:IE 9 css issues or css-hacks [duplicate]IE 9 css 问题或 css-hacks [重复]
【发布时间】:2011-08-10 08:55:04
【问题描述】:

* 更新 * 大家进行了很好的讨论,再次感谢您的意见,我只想与其他开发人员/程序员分享信息并讨论可能的解决方案。

我想出了另一个同样可以发挥作用的聪明小技巧。

这是在 asp 中进行服务器端/客户端的一种旧方式,仍然可以在 .NET 中完成(不是说这是正确的,但最终“他们”只是希望它工作)

这里是:

这更像是一个讨论而不是一个问题,但有没有人知道一些特定的 IE 9 CSS hack。我不想使用单独的样式表,但想知道是否有任何 IE 9 被破解。

例如,您可以对其他 IE 执行以下操作

_CSS_thing {css} /** IE 6 **/

*CSS_thing {css} /** IE 7 **/

.CSS_thing {margin-top:0px/0\} /** IE 8 -- could be wrong on the /\ format is one of those ways don't really use that one. **/

谢谢。

卡奥斯

【问题讨论】:

  • 只需使用单独的样式表和条件 。为自己省去麻烦,让不知道奇怪的黑客攻击和错误滥用的人可以阅读您的样式表。
  • 我还没有在 IE9 中测试过任何东西,所以看到我们显然仍然需要破解 IE 让我感到难过?您的 CSS 是否在其他浏览器中工作,或者这只是一个“理论”问题?
  • @Bazz 我现在不想使用单独的样式表。条件语句可以在这种情况下工作。
  • @Bazz 从我目前看到的情况来看,IE6-IE8 的一切都很好,然后当我在 IE9 中测试它时,一切都偏离了几个像素。我有一种不好的预感,IE9 将成为新的 IE6,因为他们已经推出了 IE 10 平台审查。
  • 听起来像是一个测试IE然后进行CSS重置的条件,然后是一个包含或添加一些额外样式的lte IE 8的条件。

标签: css cross-browser css-hack


【解决方案1】:

我不知道任何针对 IE9 的 CSS hack。对不起。

你被conditional comments卡住了。

真正的问题是:您认为为什么需要为 IE9 提供不同的样式?

IE9 是一个主要符合标准的浏览器,不像它的前辈。

【讨论】:

  • @thirtydot IE 9 没有采用适用于 IE6、IE7 和 IE8 的样式。除非他们仍然必须修复一些问题,否则它不能处理它的前辈处理得很好的样式。
  • @Kaos:那么您可能已经编写了一些 IE6-8 的错误。您的旧 CSS 是否也适用于 Firefox 和 Safari/Chrome?
  • @Paul D. Waite 没有针对此特定问题的 css 黑客/错误。事实上,它是重新设计的,因此它将兼容所有 IE 和所有浏览器。
  • @Kaos:与 IE 8 和 Firefox/Safari 相比,在 IE 9 中使用相同的 HTML 和 CSS,您会看到不同的结果?
  • @Kaos:是什么问题..?我确信尝试为 IE9 提供不同的规则是错误的做法。
【解决方案2】:

与其使用专门针对 IE 的 hack,不如使用条件 cmets 来代替?查看HTML5Boilerplate 以及他们如何处理特定于 IE 的样式。

更具体地说,您可以使用条件 cmets 将类添加到 <html><body> 元素,然后在您的样式表中,使用这些类来定位修复特定 IE 问题或差异的样式。

以下是执行此操作的 HTML5Boilerplate 项目的摘录:

<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!--[if lt IE 7 ]> <html class="no-js ie6" lang="en"> <![endif]-->
<!--[if IE 7 ]>    <html class="no-js ie7" lang="en"> <![endif]-->
<!--[if IE 8 ]>    <html class="no-js ie8" lang="en"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]><!--> <html class="no-js" lang="en"> <!--<![endif]-->

cmets 将导致 IE 使用特定版本的 &lt;html&gt; 标记,其中包含与特定版本的 IE 对应的类。使用相同的概念,您可以轻松扩展到 IE9,或添加其他类来处理特定于 IE 的行为。

【讨论】:

  • @cdezaq 对于导致问题的原因,这可能是解决方案..但仅适用于我遇到的这个特定问题。
  • 我喜欢这个想法,虽然还没有在生产中使用它,但我唯一担心的是解析器必须执行的“回溯”数量,因为它只能“失败”遍历的选择器就在 DOM 树的顶部,是否有任何关于此性能的报告/想法?
  • @Kaos,通过在有问题的 IE 浏览器中向 &lt;html&gt; 元素添加一个额外的类,您可以应用该浏览器可以使用的任何样式更正,而不会影响任何其他浏览器。我不确定我是否看到此解决方案不适用于 IE 和其他浏览器版本之间的 any 样式差异问题。你能解释一下你的意思吗?
  • @clairesuzy,我自己没有任何指标,但希望您不需要太多“修复”来处理 IE。如果从性能的角度来看 css 类让您担心,您总是可以将这些类切换为 ID,但这会限制您将 IE-Fix 类应用于页面上您可能不想使用的其他元素的能力有一个复杂的选择器来设置它们的样式。
  • @cdeszaq,非常真实,无论如何我总是谨慎使用黑客或条件表 - 所以这不会改变..这不是类..这是匹配选择器所需的回溯时间,但如果有只有少数,我想专业人士确实超过了这里的担忧:)
猜你喜欢
  • 2011-07-18
  • 1970-01-01
  • 1970-01-01
  • 2013-08-25
  • 1970-01-01
  • 2010-10-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多