2016-09-16 49 views
0

我瞭解到>只會將css應用於直接子女。但是我無法在我的情況下使用它。僅適用於css直接子女

我有HTML作爲

table[id="tbl"] div div > span { 
 
    font-weight: bold 
 
}
<table id="tbl"> 
 
    <tr> 
 
    <td> 
 
     <div> 
 
     <div> 
 
      <span> 
 
      outer span 
 
      <div> 
 
      <span> 
 
      inner span 
 
      </span> 
 
     </div> 
 
     </span> 
 
     </div> 
 
     </div> 
 
    </td> 
 
    </tr> 
 
</table>

我要讓外跨度大膽所以我寫CSS如下

table[id="tbl"] div div > span { 
    font-weight:bold 
} 

,但我的兩個跨度以粗體未來。我必須在不更改html的情況下執行此操作,只是出於某種原因使用css或jQuery。

回答

3

內部元素獲取繼承樣式規則。因此,你需要重寫你的內部元素。此外,只需使用id選擇器而不是屬性選擇器。

#tbl div div > span { 
    font-weight:bold; 
} 

#tbl div div > span span{ 
    font-weight:normal; 
} 
+0

無法在一個規則中完成? – Imad

+1

不可以。我們不能阻止這種繼承。 –

0

請嘗試它的工作完美

#tbl div div > span { 
 
    font-weight: bold; 
 
} 
 
#tbl div div > span span { 
 
    font-weight: normal !important; 
 
}
<table id="tbl"> 
 
    <tr> 
 
    <td> 
 
     <div> 
 
     <div> 
 
      <span> 
 
      outer span 
 
      <div> 
 
       <span> 
 
       inner span 
 
       </span> 
 
      </div> 
 
      </span> 
 
     </div> 
 
     </div> 
 
    </td> 
 
    </tr> 
 
</table>

+0

是不是其他答案的副本? – Imad

+0

查看變化: font-weight:normal!important; –

+0

多數民衆贊成在沒有需要 – Imad

2

也許你應該考慮重組你的HTML呢?您正在嵌套div s在spans等內部,這在HTML中是不允許的(請參閱What elements can a span tag contain in HTML5?瞭解更多詳情)。

一個不那麼複雜的樹使得編寫CSS更容易,而且你不太容易將自己繪製到複雜CSS表達式的角落,在這些角落中更改最小的事物可能會破壞一切。

向您的HTML元素添加類也可以更容易地設置樣式,甚至可能具有更好的性能(有關CSS性能的一些提示,請參閱https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Writing_efficient_CSS)。

+0

你是絕對正確的。但正如我所說,我不能。原因是html被封裝在第三方.net自定義控件中,我無法訪問它的源代碼。 – Imad