2016-01-11 212 views
4

我想編譯未來不太規則: - 當前元素之後的每一個元素,除了第一個孩子選擇元素之後的每一個元素,除了第一個孩子

它應該是這個樣子:

(& ~ *):not(:first-child) { 
    margin-left: 5px; 
} 

或本:

& ~ *:not(:first-child) { 
    margin-left: 5px; 
} 

可惜都不起作用。

+1

沒有,'第一child'不工作的方式。第一個孩子總是其父母的第一個孩子。 – Harry

回答

7

:first-child僞類總是指其父類的第一個孩子。它不能用於忽略參考元素後面的第一個孩子(兄弟姐妹)。

如果您要選擇除第一個元素中的所有元素是繼參考元素,則其應寫在下面:

.reference + * ~ *{ 
    color: red; 
} 

.reference是參考元素,將+ *指的是第一個兄弟的參考元素,它可以是任何類型,~ *指任何類型的所有後續同級元素。

在更短的,則既可以原樣使用上文提供(或)選擇器,你可以把它寫象下面這樣:

.reference { 
    & + * ~ * { 
    color: red; 
    /* and any other rules */ 
    } 
} 

以下代碼段中工作說明了這一點。

.reference + * ~ *{ 
 
    color: red; 
 
}
<div class='reference'>Reference Element</div> 
 
<p>Some other element which is the first one after reference element</p> 
 
<div>The elements to be selected</div> 
 
<p>The element to be selected</p>

+1

正確和非常完整的答案。這工作得很好,也很高興知道更多關於高級CSS!謝謝。 – Oleg

相關問題