2011-05-02 72 views
22

我很久沒有使用SASS了,想知道是否存在一些僞元素問題,如:first-child:last-childsass:第一個孩子不工作

+0

有什麼問題? – sandeep 2011-05-02 10:41:04

+0

在** scss **我不得不這樣做:'div {> div:nth-​​child(1){styles}}' – protoEvangelion 2017-06-08 22:58:56

回答

40

儘管@Andre是正確的,僞元素及其支持方面存在問題,尤其是在舊版(IE)瀏覽器中,該支持一直在不斷改進。

至於你的問題,是否有任何問題,我會說我沒有真正見過任何,儘管僞元素的語法可能有點棘手,尤其是當第一個問題出現時。所以:

div#top-level 
    declarations: ... 
    div.inside 
    declarations: ... 
    &:first-child 
     declarations: ... 

其編譯爲人們所期望的:

div#top-level{ 
    declarations... } 
div#top-level div.inside { 
    declarations... } 
div#top-level div.inside:first-child { 
    declarations... } 

我還沒有看到任何的這種任何文件,保存爲「青菜能做到的一切,CSS可以做聲明。 「與Haml和SASS一樣,縮進就是一切。

+3

非常有幫助 - 如上所述,不要忘記把**和**放在**:第一個孩子**的前面,如**&:first -child ** – 2012-11-28 16:55:25

+1

在你的例子中,你不應該期望它能編譯到div#top-level:first-child嗎? &:first-child不在div.inside塊中,爲什麼它會應用於div.inside? – Danny 2013-04-25 01:32:12

+0

@Danny:絕對正確 - 我更新了示例以反映。 – nomadkbro 2013-04-25 22:26:28

0

首先,仍然有瀏覽器不支持那些僞元素(即:first-child,:last-child),所以你必須'處理'這個問題。

有一個很好的例子,如何使這項工作,而無需使用僞元素:

http://www.darowski.com/tracesofinspiration/2010/01/11/this-newbies-first-impressions-of-haml-and-sass/

              - 見分頻器管的例子。

我希望這很有用。

+1

在附註中,很高興知道:自從CSS2開始,第一個孩子和我們在一起,因此得到廣泛支持,而最後一個孩子只能在CSS3中添加。 – Ronny 2011-05-08 22:21:24

+0

我同意你@Ronny,但人們仍舊需要面對老版本瀏覽器的一些問題 雖然:first_child出現在CSS2中,但舊版瀏覽器會出現buggy。 參考:http://reference.sitepoint.com/css/pseudoclass-firstchild – sfat 2011-05-08 22:31:33

+0

是的,但是當處理最常見的情況 - 刪除第一個/最後一個邊框等,沒有理由使用even-less-支持選擇器。除此之外,我都是積極的退化;-) – Ronny 2011-05-08 23:00:07

10

我認爲使用::first-of-type:nth-of-type(),:last-of-type更好(我的expirience)。它可以做一些細微的規則改變,但我可以做得比惠普*-of-type,比*-child選擇器多得多。