2011-09-08 100 views
86

我剛剛發現了Sass,而且我一直對此非常興奮。Sass和組合兒童選擇器

順便說一下,在我的網站上,我實現了一個樹形導航菜單,使用組合子選擇器E > F)進行了樣式設計。

是否有任何方法可以將重寫爲這段代碼轉換爲Sass上更簡單(或更好)的語法?

#foo > ul > li > ul > li > a { 
    color: red; 
} 

回答

164

沒有合併子選擇,你可能會做一些類似的:如果你想重現相同的語法與>

foo { 
    bar { 
    baz { 
     color: red; 
    } 
    } 
} 

,你可以這樣:

foo { 
    > bar { 
    > baz { 
     color: red; 
    } 
    } 
} 

編譯爲:

foo > bar > baz { 
    color: red; 
} 

還是以青菜:

foo 
    > bar 
    > baz 
     color: red 
+1

這只是要讓它更長的時間,是不是? – BoltClock

+1

我雖然這是什麼OP要 – arnaud576875

+1

不錯,謝謝。順便說一句,正如BoltClock所說的,時間更長(對我來說也是某種醜陋的)。似乎我必須留下我的舊式造型。 – frarees

14

對於你有一個規則,沒有任何縮短的方式來做到這一點。子組合器在CSS和Sass/SCSS中是一樣的,除此之外別無選擇。

但是,如果你有多個規則是這樣的:

#foo > ul > li > ul > li > a:nth-child(3n+1) { 
    color: red; 
} 

#foo > ul > li > ul > li > a:nth-child(3n+2) { 
    color: green; 
} 

#foo > ul > li > ul > li > a:nth-child(3n+3) { 
    color: blue; 
} 

你可以凝聚他們爲以下之一:

/* Sass */ 
#foo > ul > li > ul > li 
    > a:nth-child(3n+1) 
     color: red 
    > a:nth-child(3n+2) 
     color: green 
    > a:nth-child(3n+3) 
     color: blue 

/* SCSS */ 
#foo > ul > li > ul > li { 
    > a:nth-child(3n+1) { color: red; } 
    > a:nth-child(3n+2) { color: green; } 
    > a:nth-child(3n+3) { color: blue; } 
} 
+0

因此,組合子選擇器沒有任何轉換...也許有其他選擇嗎? – frarees