2015-05-04 97 views
0

我有我的網站上的鏈接懸停效果。我希望這些適用於每個鏈接,除了在特定的div。如何使用:不選擇鏈接

例HTML

<div id="menu"> 
<div class="menu_item"> 
<a href="index.html" title="Home" target="_self"> 
<img src="_images/_menu/Home.png" 
onmouseover="this.src='_images/_menu/homeHover.png'" 
onmouseout="this.src='_images/_menu/Home.png'" 
onclick="this.src='_images/_menu/homePressed.png'" alt=""/></a> 
</div> 
</div> 

的CSS我一直在試圖給我們

a:hover:not(.menu_item) { 
background-color: #D6910E; 
color: #FFE1A7; 
} *no change* 

a:hover:not(#menu) { *no change* 

a:hover:not(#menu.menu_item) { *turns off hover on all links* 
a:hover:not(#menu .menu_item) { *turns off hover on all links* 
+0

我的東西你使用的選擇器很好,你的問題在哪裏? –

回答

-1

你爲什麼不讓它更容易?

a:hover { 
    background-color:red; 
    color:red; 
} 

#menu .menu_item:hover{ 
    /* Default color */ 
} 

在你的情況,你可以通過改變修復它 「盤旋」 的

a:not(.menu_item):hover { 
    background-color: #D6910E; 
    color: #FFE1A7; 
} /*no change*/ 

a:not(#menu):hover { /*no change*/ } 

a:not(#menu.menu_item) :hover { /*turns off hover on all links*/ 

a:not(#menu .menu_item):hover { /*turns off hover on all links*/ 

希望這會幫助你

+0

更改hover的位置在所列出的任何情況下都不會有任何區別 - 最後兩個選擇器是無效的,因爲:not()只接受簡單的選擇器,前兩個等同於原始分別。 – BoltClock

2

位置希望這些來適用於每一個環節除了特定格中的那些

在CSS中這種問題的標準方法是首先給出一般規則,然後是覆蓋它的特定規則。使用:not是一個滑坡,應該爲特殊情況保留。所以:

/* State the general rule first */ 
a:hover { 
    background-color: #D6910E; 
    color: #FFE1A7; 
} 

/* Give the exception */ 
.menu_item a:hover { 
    background-color: transparent; 
    color: inherit; 
} 

如果你想使用:not,你要明白,謂詞應用於當前元素:

a:hover:not(#menu) 

意味着正在徘徊a標籤不屬於兒童#menu;這意味着a標籤被徘徊在不是自己#menu(它將永遠匹配)。做你正在嘗試與:not做的,你會想嘗試像

:not(#menu) a:hover 

然而,這也是不行的,因爲它是指「具有任何祖先這是不徘徊a標籤#menu「,這也將幾乎總是匹配。

+0

有你。非常感謝你的解釋。這有很大幫助 – billy