2015-04-02 48 views
1

我只是在我的一個嵌套的無序列表中查看Inspect元素,並且我注意到其中一個選擇器與2 id s排名低於僅僅列表元素li的選擇器。這是否與使用2 id s包含選擇器的媒體查詢有關?或者這是爲什麼?媒體查詢是否影響CSS中的優先級?或者爲什麼會發生?

enter image description here

+3

我相信你所看到的是繼承。具有兩個ID的人在'ul'上設置,但是由'li'繼承。但是,'li'具有應用的特定樣式,可以覆蓋任何繼承的樣式。我現在無法測試,否則如果它是正確的,我會將其作爲答案。 – 2015-04-02 22:01:04

+1

@Matthew Green:我傾向於說你是對的。我認爲如果OP可以提供它們的源代碼將會更清楚。 – BoltClock 2015-04-03 03:53:04

+0

@MatthewGreen如果我正確地解釋了這個問題,那是因爲它是一個嵌套的'ul'。外部'ul'具有'id =「rightnav」',但內部ul只針對其他樣式規則。 – 2015-04-03 13:15:17

回答

1

你看到的不是由於媒體的質疑,但由於繼承是如何在CSS處理。以下面的例子:

#super #specific { 
 
    color: blue; 
 
} 
 
p { 
 
    color: orange; 
 
}
<div id="super"> 
 
    <div id="specific"> 
 
     <p>Paragraph text</p> 
 
     <div>Div text</div> 
 
    </div> 
 
</div>

即使你有一個具有0200特異性值的風格,0001的價值看似覆蓋它。從我所知道的原因是由於CSS如何計算指定的值。

According to the spec,它首先通過級聯來確定任何值。如果沒有找到值,那麼它會查看是否有任何東西被繼承。最後它將使用該元素的任何默認值。由於我的示例中的藍色通過繼承傳遞給其內部元素,這意味着應用於內部元素的任何CSS值都會覆蓋該值。這也是爲什麼在CSS中使用inherit值非常重要,因爲它允許您將繼承設置爲級聯的一部分,確保這些值採用正確的優先級,而不是僅允許默認值。