2016-11-18 44 views
0

我想顯示「圖標」當我獨立懸停在每個項目上時。問題是,只要我懸停在一個子項目上,父母也會顯示它的圖標。我如何定位我懸停的元素,而不是所有的列表層次結構在css中

.list { 
 
    width: 150px; 
 
    height: 19px; 
 
} 
 
.list >.item { 
 
    background-color: #c3c3c3; 
 
    display: block; 
 
    margin-bottom: 40px; 
 
    margin-top: 12px; 
 
    border: 1px solid black; 
 
    color: white; 
 
    height: 30px; 
 
} 
 
.list .item .content { 
 
    position: relative; 
 
    width: 100px; 
 
    float: left; 
 
    display: block; 
 
} 
 
.list .item .actions { 
 
    position: relative; 
 
    color: red; 
 
    visibility: hidden; 
 
} 
 
.list .item:hover .actions { 
 
    visibility: visible; 
 
    cursor: pointer; 
 
}
<ol class="list"> 
 
    <li class="item"> 
 
    <div class="content"> 
 
     <span>1- Hi...</span> 
 
    </div> 
 
    <div class="actions"> 
 
     <span class="icon">Icon 1</span> 
 
    </div> 
 
    <ol class="list"> 
 
     <li class="item"> 
 
     <div class="content"> 
 
      <span>a- Hi 2...</span> 
 
     </div> 
 
     <div class="actions"> 
 
      <span class="icon">Icon 2</span> 
 
     </div> 
 
     </li> 
 
    </ol> 
 
    </li> 
 
    <li class="item"> 
 
    <div class="content"> 
 
     <span>2- Hi 3...</span> 
 
    </div> 
 
    <div class="actions"> 
 
     <span class="icon">Icon 3</span> 
 
    </div> 
 
    </li> 
 
</ol>

我如何用CSS實現這一目標?

+2

是否有一個理由,爲什麼你不使用JavaScript?因爲有一種方法可以使用JS來完成它。 – Julisch

+0

是的,我的意思是,我想用CSS解決它,但如果沒有機會做到這一點,我想我必須用JS來做到這一點。 – msqar

+1

一種方法是向父母或孩子添加一個班級,並使用不同的選擇器來定位父母和子孩子 – pol

回答

1

您可以使用一個額外的div作爲每個項目的包裝:

.list { 
 
    width: 150px; 
 
    height: 19px; 
 
} 
 
.list >.item { 
 
    background-color: #c3c3c3; 
 
    display: block; 
 
    margin-bottom: 40px; 
 
    margin-top: 12px; 
 
    border: 1px solid black; 
 
    color: white; 
 
    height: 30px; 
 
} 
 
.list .item .content { 
 
    position: relative; 
 
    width: 100px; 
 
    float: left; 
 
    display: block; 
 
} 
 
.list .item .actions { 
 
    position: relative; 
 
    color: red; 
 
    visibility: hidden; 
 
} 
 
.list .item-wrapper:hover>.actions { 
 
    visibility: visible; 
 
    cursor: pointer; 
 
}
<ol class="list"> 
 
    <li class="item"> 
 
    <div class="item-wrapper"> 
 
     <div class="content"> 
 
     <span>1- Hi...</span> 
 
     </div> 
 
     <div class="actions"> 
 
     <span class="icon">Icon 1</span> 
 
     </div> 
 
    </div> 
 
    <ol class="list"> 
 
     <li class="item"> 
 
     <div class="item-wrapper"> 
 
      <div class="content"> 
 
      <span>a- Hi 2...</span> 
 
      </div> 
 
      <div class="actions"> 
 
      <span class="icon">Icon 2</span> 
 
      </div> 
 
     </div> 
 
     </li> 
 
    </ol> 
 
    </li> 
 
    <li class="item"> 
 
    <div class="item-wrapper"> 
 
     <div class="content"> 
 
     <span>2- Hi 3...</span> 
 
     </div> 
 
     <div class="actions"> 
 
     <span class="icon">Icon 3</span> 
 
     </div> 
 
    </div> 
 
    </li> 
 
</ol>

+0

謝謝彼得,我會試試看。問題在於使用名爲NestableJS的庫,所以每次嘗試在另一個內添加一個項目時,它會在列表中創建另一個「項目包裝器」,因此處理CSS可能會有點混亂。 – msqar

相關問題