2017-04-19 44 views
0

我目前正在嘗試更改CSS中的另一個對象的屬性,但不知道如果我這樣做的權利。任何幫助,將不勝感激。如何更改懸停CSS上的另一個對象的屬性

ul.drop-menu { 
 
    opacity: 0.1; 
 
} 
 

 
nav > ul > li:hover ~ ul.drop-menu { 
 
    opacity: 1; 
 
}
<nav> 
 
    <ul> 
 
     <li>Test 
 
      <ul class="drop-menu"> 
 
       <li class="1">Test1</li> 
 
       <li class="2">Test2</li> 
 
       <li class="3">Test3</li> 
 
       <li class="4">Test4</li> 
 
       <li class="5">Test5</li> 
 
       <li class="6">Test6</li> 
 
       <li class="7">Test7</li> 
 
      </ul> 
 
     </li> 
 
    </ul> 
 
</nav>

+2

這CSS將無法正常工作。 '〜'是兄弟選擇器,'li'不能是'ul'的兄弟。發佈您的HTML –

+0

檢查出[鏈接](http://stackoverflow.com/questions/6910049/on-a-css-hover-event-can-i-change-another-divs-styling) –

+0

html添加現在@MichaelCoker。 – alexo1001

回答

2

~是「general sibling selector」,因此它將匹配是選擇的左側的元素之後的兄弟姐妹的任何元件。

隨着你的標記,你要麼只是想刪除~針對任何ul.drop-menu那就是li一個孩子,或者如果你想的直系後裔,將其更改爲>。我假設你想要後者,以防止你在li之間嵌套多個.drop-menu。我添加了另一個嵌套菜單,並稍微改變了一下選擇器來證明這一點。

ul.drop-menu { 
 
    opacity: 0.1; 
 
} 
 

 
nav > ul li:hover > ul.drop-menu { 
 
    opacity: 1; 
 
}
<nav> 
 
    <ul> 
 
    <li>Test 
 
     <ul class="drop-menu"> 
 
     <li class="1">Test1</li> 
 
     <li class="2">Test2 
 
      <ul class="drop-menu"> 
 
      <li class="1">Test1</li> 
 
      <li class="2">Test2</li> 
 
      <li class="3">Test3</li> 
 
      <li class="4">Test4</li> 
 
      <li class="5">Test5</li> 
 
      <li class="6">Test6</li> 
 
      <li class="7">Test7</li> 
 
      </ul> 
 
     </li> 
 
     <li class="3">Test3</li> 
 
     <li class="4">Test4</li> 
 
     <li class="5">Test5</li> 
 
     <li class="6">Test6</li> 
 
     <li class="7">Test7</li> 
 
     </ul> 
 
    </li> 
 
    </ul> 
 
</nav>

+0

就像我想要的那樣工作。我對前端開發人員很陌生,因爲我剛剛跳入其中,所以我一般對css不太瞭解。如果我花一些時間去看待這樣的事情,這不會發生。 – alexo1001

+1

@ alexo1001的話。 fwiw,'〜'是一個普通的兄弟姐妹選擇器,它的犯罪夥伴是'+',它是一個相鄰的兄弟姐妹選擇器。並不真正適用於你的答案,但是如果你有學習的心情...... https://developer.mozilla.org/en-US/docs/Web/CSS/Adjacent_sibling_selectors –

+0

謝謝,我會去的檢查出來@MichealCoker – alexo1001

1

你必須使用>,而不是~。請檢查:

ul.drop-menu { 
 
    opacity: 0.1; 
 
} 
 

 
nav > ul > li:hover > ul.drop-menu { 
 
    opacity: 1; 
 
}
<nav> 
 
    <ul> 
 
     <li>Test 
 
      <ul class="drop-menu"> 
 
       <li class="1">Test1</li> 
 
       <li class="2">Test2</li> 
 
       <li class="3">Test3</li> 
 
       <li class="4">Test4</li> 
 
       <li class="5">Test5</li> 
 
       <li class="6">Test6</li> 
 
       <li class="7">Test7</li> 
 
      </ul> 
 
     </li> 
 
    </ul> 
 
</nav>

+0

感謝您的答案。其他人首先發布了它,但我選擇了他的答案。 – alexo1001

+0

@ alexo1001,歡迎您!!!!! – csharpbd

+0

我編輯了你的問題,請檢查這個..... – csharpbd

相關問題