2014-03-30 45 views
1

有沒有一種方法可以確定mixin包含在哪裏? IE:檢測Mixin包含在哪裏

包括

@include test(); 

.test { 
    @include test(); 
} 

MIXIN

@mixin test(){ 
    @if (weAreNested) { 
     // We are in a css selector 
     &.test {} 
    } @else { 
     // we are not inside any selector 
     .test {} 
    } 
} 

那麼,有沒有某種形式的指令,我們可以用它來做到這一點的?

使用&之前,選擇器已知道我們是否在基本級別和不會編譯的CSS文件,所以我想知道是否有一種方法,他們讓我們測試這個?

乾杯

+0

您是使用原始的Ruby Sass編譯器還是爲其他語言編寫的許多實現之一? – IMSoP

回答

1

我不知道這在技術上是可行的,但我敢肯定這不是一個好主意。

如果您認爲mixin在任何編程語言中都像函數一樣,您的問題可以改寫爲「函數可以確定從何處調用它以觸發不同的功能」。雖然這在許多語言中確實是可行的,例如通過處理當前的「堆棧跟蹤」,但將其用於調試以外的其他任何操作肯定會導致難以維護的代碼。

更具體地,您的示例示出了單個混入執行兩個而不同的工作:

  • weAreNested分支增加了一些規則,以特定的規則集,只要被匹配的元件還具有一個附加的類
  • else分支爲匹配特定類的所有元素創建全局規則;事實上,這個例子不通過是一個mixin獲得任何,雖然參數的例子是可能的

在我看來,是一個更好的主意:

  • 要麼有兩個mixin,命名適當,甚至可能通過第三個mixin共享實現
  • 使用參數給mixin顯式指定您想要的行爲,而不是從其中的「神奇」 mixin被稱爲