2012-04-05 20 views
14

Czy można ustawić zmienną @include mixin();? Próbowałem toUstawianie zmiennej na @mixin w Sassie?

@mixin bg-gradient($fallback, $type, $positionX, $positionY, $from, $from-percent, $to, $to-percent){ 
    background: $fallback; 
    background: -webkit-#{$type}-gradient($positionX $positionY, $from $from-percent, $to $to-percent); 
    background: -moz-#{$type}-gradient($positionX $positionY, $from $from-percent, $to $to-percent); 
    background:   #{$type}-gradient($positionX $positionY, $from $from-percent, $to $to-percent); 
} 

$navBg: @include bg-gradient(#eee, radial, top, center, #999, 0%, #555, 100%); 
body { $navBg; } // it gave me an error 

Odpowiedz

25

nie jestem świadomy jakikolwiek sposób to zrobić dokładnie, ale jeśli starasz się po prostu wysuszyć swoje ustawienia na danym rodzaju gradientu, można napisać mixin otoki dla niego :

@mixin navBg() { 
    @include bg-gradient(#eee, radial, top, center, #999, 0%, #555, 100%); 
} 
body { @include navBg; } 

Edit:

Here „SA lista typów danych obsługiwanych przez zmienne Sass. Ani połączenia z mixinami, ani ich wynik (całe reguły CSS) nie są uwzględniane. Próbowałem również traktować include jako ciąg i interpolować go, ale to działa tylko dla CSS końcowego wyniku, a nie dla kolejnych dyrektyw.

+2

Thnx za rozwiązanie i dodatkowe informacje! Naprawdę doceniam to. – FoxKllD

3
@mixin gradient ($place, $bcolor1, $bcolor2){`<br>` 
    background-image: linear-gradient($place, $bcolor1, $bcolor2)`<br>` 
    background-image: -o-linear-gradient($place, $bcolor1, $bcolor2)`<br>` 
    background-image: -moz-linear-gradient($place, $bcolor1, $bcolor2)`<br>` 
    background-image: -webkit-linear-gradient($place, $bcolor1, $bcolor2)`<br>` 
    background-image: -ms-linear-gradient($place, $bcolor1, $bcolor2)`<br>` 
} 

body{ 
    @include gradient(bottom, #F90000 18%, #FF4C4C 66%) 
} 
3

Jeśli próbujesz ustawić zwracaną wartość do zmiennej SASS, musisz użyć funkcji @function, a nie @mixin. To zawiesiło mnie na chwilę i nie był świadomy funkcji @. Na przykład ...

@function font($font-size, $line-height: 1.4, $font-family: Arial) { 

    @if $line-height == 1.4 { 
     $line-height: round($line-height*$font-size); 
    } 

    @return #{$font-size}/#{$line-height} $font-family; 
} 

$font-medium: font(20px); 

BTW, choć nie odnosi się to, co użytkownik szuka dokładnie, to jest jedyną rzeczą, która pojawia się na przeszukaniu Internetu o ustawienie var do wstawek więc chciałem podzielić się tym tutaj, aby inni wiedzieli, co zrobić, gdy pojawi się taka sytuacja.

+0

To nie pomoże w przypadku użycia OP, ponieważ nie spodziewają się jednej wartości zwracanej. – cimmanon

+0

Po co tworzyć "funkcję" o zakodowanych wartościach? Kinda pokonuje punkt eh? –

Powiązane problemy