2014-04-03 39 views
1

是否有可能想到這個CSS輸出:LESS /是否可以擴展自己嵌套的最近的祖先?

.a .b { color: green } 
.a .c, .b { color: green } 

從這個LESS代碼:

.a { 
    .b { 
     color: green; 
     .c { 
     &:extend(.b); 
     } 
    } 
} 

在一個句子:我們可以擴展嵌套本身最近的祖先?

+1

由於':extend'只能匹配完整的上下文選擇器,所以沒有擴展'.b'。如果你使用':extend(.a .b)',它會匹配一些東西,但是你不會得到你所建議的輸出,因爲這需要'.c'在'.a '而不是'.b'。) – helderdarocha

+0

你能寫一個答案來結束這篇文章嗎? :)我會驗證它。 – Mik378

+1

好的!我還會詳細介紹一下。 – helderdarocha

回答

2

有沒有.b延伸,因爲:extend將只匹配完整的上下文選擇器和.b不存在(只有.a .b存在)。所以:extend(.b)將不起作用。

如果使用:extend(.a .b)自認爲選擇存在匹配的東西。這:

.a { 
    .b { 
     color: green; 
     .c { 
     &:extend(.a .b); 
     } 
    } 
} 

將導致:

.a .b, 
.a .b .c { 
    color: green; 
} 

但你不會得到你所建議的輸出,因爲這將需要.c.a,而不是根據.b下。有了這樣的:

.a { 
    .b { 
     color: green; 
    } 
    .c { 
     &:extend(.a .b); 
    } 
} 

你會得到下面的結果,這是更接近你期望:

.a .b, 
.a .c { 
    color: green; 
} 

爲了得到你所期望的結果,你只需要添加這個(在頂級):

.b:extend(.a .b){} 
+0

不錯:)謝謝! – Mik378