2011-01-10 50 views
2

是否有任何替代品符合IE8(和怪癖模式)的:not css3选择器。替代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,显示它在支持:nothttp://jsfiddle.net/Raynos/TjKbz/

回答

5

我不认为你在这种情况下,需要:not浏览器中工作:

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

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

的选择#printable具有比*更高的优先级,因此您的#printable元素将可见。

+0

这正是我所期待的。 – Raynos 2011-01-10 14:52:48

1

你可以试试特异性覆盖,即

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