2013-01-12 36 views
0

我之前使用的#footer a选择,但除去#footer后作出改变适用于所有<a>的网页上,除了那些在一个div一类的.navbar,无链接指定了以下选择:a:not(.navbar a)a:not(.navbar a):hovera:not(.navbar a):active(也可见于谷歌浏览器元素检查员)CSS选择/转换属性值似乎是错的

我创建2个jsFiddles代表什么,我想说:

  1. Working example of first version
  2. Broken, new code

我不得不再次修复它,所以它适用于整个页面,只是一个DIV。

回答

2

你不能在CSS中做a:not(.navbar a)

如果您知道您的a将始终直接嵌套在.navbar之内,并且您想要排除该a,您可以选择:not(.navbar) > a。但是,如果嵌套级别是任意的,并且您想排除嵌套在.navbar内的任何位置的a,那么您可能会遇到编写CSS选择器的问题。像:not(.navbar) a之类的东西总是可以匹配树中更高一些的其他元素。查看this answer为什么它不起作用的另一个例子。

这个的最简单的解决方案是在.navbar a效果适用于所有a元素,则撤销它们:

.navbar a { 
    text-shadow:none; 
    padding:0; 
    -webkit-transition-property: none; 
    -moz-transition-property: none; 
    -o-transition-property: none; 
    transition-property: none; 
} 

jsFiddle preview

+0

Acoording [本](http://jsfiddle.net/ DJDavid98/VJ43W/3 /)小提琴,选择器现在工作,但它不排除导航栏。而''可以放在'.navbar'里面的任何元素中(看小提琴) – SeinopSys

+0

@ DJDavid98:你不能':not(.navbar a)'。我不清楚,编辑。 – BoltClock

+0

我不能,好吧,但我该如何实现呢? – SeinopSys