替代css3而不是选择器

时间:2011-01-10 14:28:01

标签: javascript jquery html css css-selectors

是否有符合IE8(和怪癖模式)的:not css3选择器的替代品。

在css或javascript / jquery中模拟选择器或类似的东西。

我正在使用*:not,如下所示。随意推荐一种避免完全使用:not的解决方案。

@media screen {
    #printable {
        visibility: hidden;
    }
}

@media print {
    *:not(#printable) {
        visibility: hidden;
    }
    #printable {
        position: absolute;
        visibility: visible;
    }
}

请注意,:not的使用与@media print的使用有关,因此只使用简单的jQuery解决方案将css应用于$(":not(#printable)"),如果不聪明,将无法正常工作。

包括像ie9.js或selectivirz这样的整个库不是一个选项,因为它可以影响页面的其他各个部分,并且会涉及大量的重新测试。

一个jsfiddle,显示它在支持:not http://jsfiddle.net/Raynos/TjKbz/的浏览器中工作

3 个答案:

答案 0 :(得分:5)

在这种情况下,我认为您不需要:not

@media screen {
    #printable {
        visibility: hidden;
    }
}

@media print {
    * {
        visibility: hidden;
    }
    #printable {
        position: absolute;
        visibility: visible;
    }
}

选择器#printable的优先级高于*,因此您的#printable元素将可见。

答案 1 :(得分:1)

您可以尝试特异性覆盖,即

@media print {
  * {
    visibility: hidden;
  }
  #printable, #printable * {
    visibility: visible;
  }
}

答案 2 :(得分:-3)