2012-05-03 35 views
6

Tôi chỉ mới bắt đầu sử dụng Sass và tôi đang cố gắng tìm hiểu làm thế nào để tạo ra một mixin hộp bóng ...SASS, cách chính xác để gọi mixin là gì?

tôi sao chép mixin này từ một tràn bài chồng ..

@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}; 
    } 

Tuy nhiên tôi không chắc chắn chính xác làm thế nào để định dạng của tôi @include

Đây là những gì tôi có cho đến nay cho @include tôi

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

Và đây là lỗi đầu ra của tôi ...

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

Trả lời

17

Bad cú pháp.

Sử dụng @include box-shadow(0, 1px, 1px, rgba(0, 0, 0, 0.075), inset);

(Edited vào năm 2014 bao gồm những thay đổi cú pháp Sass' được thực hiện trong vài năm trở lại đây)

+0

Vừa thử nghiệm. Điều này đang làm việc cho tôi. –

+0

Cảm ơn sự giúp đỡ của bạn .. Điều đó đã hiệu quả. –

+2

Đã thử ví dụ này và có vẻ như không hoạt động cộng với các tùy chọn không đúng thứ tự khi được liệt kê. –

9

Tôi mới đến Sass và câu trả lời được chấp nhận không làm việc với tôi; thứ tự của các giá trị có vẻ sai và các giá trị cũng yêu cầu dấu phẩy sau mỗi giá trị. Tôi sử dụng như sau:

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

cảm ơn bạn, bây giờ nó hoạt động! – user2952265

+0

Điều này sẽ chỉ cho phép bạn chỉ sử dụng một bóng. Câu trả lời được chấp nhận cho phép nhiều. – wintercounter

+0

Bạn có thể hiển thị ví dụ về những gì bạn mô tả không? Nếu bạn sử dụng cú pháp được cung cấp trong câu trả lời được chấp nhận với bản mixin trong câu hỏi tôi nhận được một lỗi: Hộp bóng mixin thiếu đối số $ còn lại. – Silverback

-1

Đối với 'Silverback' một ví dụ sẽ là:

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

Nó bao gồm các dấu phẩy quên rằng 'pixel 67' nhận xét.

+0

Tôi cho rằng về mặt kỹ thuật bạn có thể sử dụng điều này nhưng tôi nghĩ rằng nếu bạn đã làm theo thứ tự biến mixin nhất định, bạn sẽ phải đặt "inset" ở cuối (không nói nó thuộc về cú pháp); có vẻ như bạn có thể nhập bất cứ điều gì bạn muốn trong 4 điểm và nó sẽ nhổ ra bất kể: '@bao gồm hộp bóng (chó, mèo, ếch, gnat); ' Nhưng bạn nói đúng, đó là dấu phẩy đang làm cho nó hoạt động. – Silverback

+0

Tôi thấy những gì bạn đang nói, tôi cũng tươi với SASS và thực sự đã làm theo ví dụ của bạn. Một cách khác để đạt được điều này mà không phải đối phó với dấu phẩy là đi qua một đối số khác. '@mixin box-shadow ($ shadow ...) { -webkit-box-shadow: $ shadow; -moz-box-shadow: $ shadow; hộp bóng: $ shadow; } ' '@include hộp bóng (0 0 20px rgba ($ đen, 0,8));' -HOẶC- ' @include hộp-shadow (0px 1px 4px rgba ($ đen, 0,3), 0px 0px 40px rgba ($ black, 0.1) inset); ' Cuối cùng cũng giống như bất cứ điều gì khác một tấn cách để làm điều tương tự. –

4

Tôi nghĩ bạn nên bao gồm một số giá trị mặc định:

@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}; 
} 

Bằng cách đó, bạn không cần phải thiết lập tùy chọn của bạn mỗi khi nếu bạn muốn sử dụng cùng mã:

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

tôi cũng đã sửa thứ tự của các tùy chọn: ngang thường xuất hiện trước khi thẳng đứng.

0

Trong năm 2016, có vẻ như mọi thứ đã thay đổi một lần nữa từ các câu trả lời được chấp nhận. Referecing tài liệu Compass và examples here, sau đây sẽ làm việc trong một tập tin SCSS:

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

Đó bóng rất mờ nhạt, vì vậy tôi thực sự được sử dụng:

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

Đối với nhiều bóng tối: Phân tách từng bóng bằng dấu phẩy.

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

+1

Không ai hỏi về Compass. Câu hỏi đặt ra là yêu cầu cụ thể về một lỗi cú pháp trong khi cố gắng sử dụng một mixin OP đã viết. – cimmanon