2016-05-23 18 views
1

一個特殊的嵌套列表,父代div id和不同類別的列表項......我無法讓它正確分配背景顏色。嵌套列表CSS覆蓋樣式(#id + class)

例如:

<div id="sidebar" class="widget-area"> 
<div class="theiaStickySidebar"> 
    <aside id="advanced_sidebar_menu-2" class="widget advanced-sidebar-menu"> 
     <ul class="parent-sidebar-menu"> 
      <li class="current_page_ancestor"> 
       <a href="http://somesite/about-us/">About Us</a> 
       <ul class="child-sidebar-menu"> 
        <li class="page_item"> 
         <a href="http://somesite/about-us/welcome/">Welcome</a> 
        </li> 
        <li class="page_item current_page_item"> 
         <a href="http://somesite/about-us/mission-and-philosophy/">Mission and philosophy</a> 
        </li> 
       </ul> 
      </li> 
     </ul> 
    </aside> 
</div> 

,你會用什麼CSS代碼來改變每個L1的背景顏色/屬於current_page_ancestor類,page_itemcurrent_page_item一個項目(每個人都應該有不同的顏色)

+0

你有沒有JSFiddle的例子,所有的HTML/CSS屬於你的問題,我們可以看看? http://jsfiddle.net – PavKR

回答

0

對於第一個a,您可以使用>或直接子選擇器,對於其他人,您可以使用parentClass - >a

.current_page_ancestor > a { 
 
    color: black; 
 
} 
 
.page_item a { 
 
    color: green; 
 
} 
 
.page_item.current_page_item a { 
 
    color: red; 
 
}
<div id="sidebar" class="widget-area"> 
 
    <div class="theiaStickySidebar"> 
 
    <aside id="advanced_sidebar_menu-2" class="widget advanced-sidebar-menu"> 
 
     <ul class="parent-sidebar-menu"> 
 
     <li class="current_page_ancestor"> 
 
      <a href="http://somesite/about-us/">About Us</a> 
 
      <ul class="child-sidebar-menu"> 
 
      <li class="page_item"> 
 
       <a href="http://somesite/about-us/welcome/">Welcome</a> 
 
      </li> 
 
      <li class="page_item current_page_item"> 
 
       <a href="http://somesite/about-us/mission-and-philosophy/">Mission and philosophy</a> 
 
      </li> 
 
      </ul> 
 
     </li> 
 
     </ul> 
 
    </aside> 
 
    </div>

+0

對不起,但它不工作,我相信有一個特殊的div id #sidebar將贏得: - /。我需要重寫 – Riccardo

+0

'.current_page_ancestor> a'因爲後續的規則會覆蓋它,所以可以只剩下'.current_page_ancestor a'。 – PavKR

+0

@Riccardo不知道它是如何工作的? –

0

ul { 
 
    /* reset lists */ 
 
    list-style: none; 
 
    padding: 0; 
 
    margin: 0; 
 
} 
 
ul li a { 
 
    text-decoration: none; 
 
} 
 

 

 

 
/* specific styles */ 
 

 
.page_item a { 
 
    display: block; 
 
    padding: 10px 20px; 
 
    border-bottom: 1px solid white; 
 
    color: white; 
 
    background-color: #333; 
 
} 
 
.page_item a:hover, 
 
.page_item.current_page_item a{ 
 
    background-color: #666; 
 
} 
 

 
.parent-sidebar-menu { 
 
    width: 200px; 
 
} 
 

 
.current_page_ancestor > a { 
 
    display: block; 
 
    padding: 10px 20px; 
 
    color: green; 
 
    background-color: #fff; 
 
    text-align: right; 
 
} 
 

 
.current_page_ancestor > a:before { 
 
    content: "Back to >> "; 
 
    font-size: 14px; 
 
    color: #000; 
 
    margin-right: 10px; 
 
}
<div id="sidebar" class="widget-area"> 
 
    <div class="theiaStickySidebar"> 
 
    <aside id="advanced_sidebar_menu-2" class="widget advanced-sidebar-menu"> 
 
     <ul class="parent-sidebar-menu"> 
 
     <li class="current_page_ancestor"> 
 
      <a href="http://somesite/about-us/">About Us</a> 
 
      <ul class="child-sidebar-menu"> 
 
      <li class="page_item"> 
 
       <a href="http://somesite/about-us/welcome/">Welcome</a> 
 
      </li> 
 
      <li class="page_item current_page_item"> 
 
       <a href="http://somesite/about-us/mission-and-philosophy/">Mission and philosophy</a> 
 
      </li> 
 
      </ul> 
 
     </li> 
 
     </ul> 
 
    </aside> 
 
    </div> 
 
</div> <!-- #sidebar -->

這是代替使用每一個類做不同的事情,我使用類似的事情做同樣的事情,以及基於狀態略有不同更改。祖先頁面的細節與子欄邊欄菜單不同。希望這可以幫助。

+0

您是否可以僅重置列表中的列表#sidebar? – Riccardo

+0

以這種方式重新設置列表是相當普遍的做法,它可以更精緻,但我很匆忙。我在每個項目中都包含一個重置文件,通常都會正常化至於你的具體問題,你可以重置你想要的任何元素的任何樣式。 – orangeh0g

+0

謝謝.............. – Riccardo