2012-05-03 17 views
6

Właśnie zaczął używać SASS i próbuję dowiedzieć się, jak stworzyć mixin shadow box ...SASS, Jaki jest prawidłowy sposób wywoływania mixin?

skopiowałem ten wstawek z innym stanowisku przepełnienie stosu ..

@mixin box-shadow($top, $left, $blur, $color, $inset:"") { 

     -webkit-box-shadow:$top $left $blur $color #{$inset}; 
     -moz-box-shadow:$top $left $blur $color #{$inset}; 
     box-shadow:$top $left $blur $color #{$inset}; 
    } 

Jednak ja nie jestem pewien dokładnie, jak sformatować @include

to, co mam tak daleko do mojego @include

@include box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 

I to jest mój błąd wyjścia ...

error(Line 1003: Invalid CSS after "...lude box-shadow": expected "}", was ": inset 0 1px 1...") 

Odpowiedz

17

Bad składnia.

Zastosowanie @include box-shadow(0, 1px, 1px, rgba(0, 0, 0, 0.075), inset);

(Edytowane w 2014 roku w celu uwzględnienia zmian składni Sass' wykonana w ciągu ostatnich kilku lat)

+0

Właśnie testowane. To działa dla mnie. –

+0

Dzięki za pomoc ... To zadziałało. –

+2

Wypróbowałem ten przykład i wygląda na to, że nie działa, a opcje są niedostępne na liście. –

9

Jestem nowy Sass i zaakceptowane odpowiedź nie działa na mnie; kolejność wartości wygląda źle, a wartości również wymagają przecinków po każdym. Użyłem następujących czynności:

@include box-shadow(0, 1px, 1px, rgba(0, 0, 0, 0.075), inset); 
+0

dziękuję, teraz to działa! – user2952265

+0

Pozwoli ci to używać tylko jednego cienia. Akceptowana odpowiedź pozwala na wielokrotność. – wintercounter

+0

Czy możesz pokazać przykład tego, co opisujesz? Jeśli użyjesz podanej składni podanej w zaakceptowanej odpowiedzi z mixinem w pytaniu, otrzymasz komunikat o błędzie: W polu Mixin box-shadow brakuje argumentu $ left. – Silverback

-1

Dla '' Silverback przykład byłoby:

@include box-shadow(inset 0, 1px, 1px, rgba(0, 0, 0, 0.075)); 

Obejmuje ono zapomniane przecinki, że 'piksel 67' skomentował.

+0

Podejrzewam, że technicznie możesz tego użyć, ale myślę, że gdybyś podążał za podaną kolejnością zmiennych mixin, musiałbyś wstawić "koniec" na końcu (nie mówiąc, że syntaktycznie tam jest); wygląda na to, że możesz wprowadzić co chcesz w 4 miejscach i wypluje to niezależnie: '@include box-shadow (pies, kot, żaba, komar);' Ale masz rację, to przecinki które sprawiają, że działa. – Silverback

+0

Widzę, o czym mówisz, jestem także świeży dla SASS i faktycznie podążam za twoim przykładem. Innym sposobem na osiągnięcie tego bez zajmowania się przecinkami jest przekazanie innego argumentu. '@mixin box-shadow ($ shadow ...) { -webkit-box-shadow: $ shadow; -moz-box-shadow: $ shadow; box-shadow: $ shadow; } ' ' @include skrzynkowej cienia (0 0 20 pikseli rgba ($ czarny, 0,8)); ' LUB ' @include skrzynkowej cienia (0 pikseli 1 piksel 4 piksele rgba ($ czarny, 0,3), 0 pikseli Wstawka 0px 40px rgba ($ black, 0,1); ' W końcu tak jak wszystko inne mnóstwo sposobów zrobienia tego samego. –

4

myślę, że należy to niektóre domyślne:

@mixin box-shadow($left:0, $top:2px, $blur:2px, $color:#000, $inset:"") { 
     -webkit-box-shadow:$left $top $blur $color #{$inset}; 
     -moz-box-shadow:$left $top $blur $color #{$inset}; 
     box-shadow:$left $top $blur $color #{$inset}; 
} 

W ten sposób, nie trzeba ustawić opcje za każdym razem, gdy chcesz użyć tego samego kodu:

.your-selector { 
    @include box-shadow(); 
} 

I poprawiono również kolejność opcji: pozioma normalnie pojawia się przed pionem.

0

W 2016 r. Wygląda na to, że rzeczy zmieniły się ponownie z zaakceptowanych odpowiedzi. Referecing dokumentację kompas i examples here dodaje zadziała w pliku SCSS:

@include box-shadow(rgba(0, 0, 0, 0.075)0 0 3px 1px inset);

że cień jest bardzo słaby, więc faktycznie wykorzystane:

@include box-shadow(rgba(0, 0, 0, 0.75)0 0 3px 1px inset);

Dla wielu cieni: Oddziel każdy cień przecinkiem.

@include box-shadow(rgba(0, 0, 0, 0.75)0 0 3px 1px inset, rgba(blue, 0.4) 0 0 5px 5px);

+1

Nikt nie pyta o kompas. Pytanie dotyczy konkretnie pytania o błąd składni podczas próby użycia miksu napisanego przez OP. – cimmanon

Powiązane problemy