2012-12-28 29 views
6

Tôi đang cố gắng để workaround Bourbon không hỗ trợ @keyframe bằng cách tạo ra phiên bản tiền tố của riêng tôi với một vòng lặp Sass như thế này:Interpolation các tiền tố trên @keyframes trong Sass

$list: '' -ms- -webkit- -moz- -o- 
$at: @ //at sign 
@each $prefix in $list 

    #{$at}#{$prefix}keyframes moveclouds 
    from 
     #{$prefix}transform: translateX(2400px) 
    to 
     #{$prefix}transform: translateX(-400px) 

, phấn đấu để tạo css:

@keyframes moveclouds from { 
    transform: translateX(2400px); 
} 
@keyframes moveclouds to { 
    transform: translateX(-400px); 
} 

@-moz-keyframes moveclouds from { 
    -moz-transform: translateX(2400px); 
} 
@-moz-keyframes moveclouds to { 
    -moz-transform: translateX(-400px); 
} 
.... 

vấn đề là tôi không thể tìm ra cách để buộc Sass đầu ra @ (ít dấu hiệu) ở đầu dòng

nếu tôi làm

$at: @ // wont work, error 
$at: \@ // will generate \@keyframes = not good 
$at: "\@" // wont work error 
$at: @@ // will generate @@keyframes = not good 

để mọi người biết cách đăng xuất khi đăng nhập Sass?

+0

Lỗi có thông báo không? –

+0

Có vẻ như điều này đã được khắc phục. Tôi chạy vào cùng một vấn đề nhưng cập nhật lên 3.4.13 và lỗi đã biến mất. – Godwin

Trả lời

5

Điều này đơn giản là không thể sử dụng phép nội suy biến. Bạn có thể khắc phục sự phân công @ như thế này:

$at: unquote("@"); // either of these will work 
$amp: #{"@"}; 

Nhưng sau đó bạn kết thúc với lỗi này:

error sass/test.scss (Line 4: Invalid CSS after "": expected selector_comma_sequence, was "@-ms-keyframes ...")

Interpolation trên @keyframes hiện không được hỗ trợ, nhưng sẽ có trong tương lai. Bạn có thể track the progress of that on GitHub. Trong thời gian đó, bạn sẽ phải ghi lại thông tin keyframe của mình bằng tay. Một ví dụ đơn giản như sau:

@mixin keyframes($name) { 
    @-webkit-keyframes #{$name} { 
     @content; 
    } 

    @keyframes #{$name} { 
     @content; 
    } 
} 

Cách sử dụng:

@include keyframes(foo) { 
    0% { 
     color: red; 
    } 

    100% { 
     color: blue; 
    } 
} 

Một ví dụ phức tạp hơn có thể được tìm thấy trong Eric Meyer's Sass Animation library.

+0

thx dù sao đi nữa, tôi không biết rằng chức năng unquote tồn tại trong Sass :) ... đã thử nó như bạn đề xuất, doh như bạn đã nói nó nổ tung. Tôi đang sử dụng các tiền tố chính được viết bằng tay, nhưng thực tế là nó không thể được viết "đẹp hơn" là điều làm tôi khó chịu (và có thể sẽ giữ tôi tỉnh táo tối nay) – equivalent8

+1

Tôi đã xem một cuộc thảo luận từ một năm trước về các nhóm Google liên quan đến hình động, gợi ý hỗ trợ tốt hơn cho nó. Tôi đoán giải pháp của họ là chỉ thị '@ content'. Xem https://groups.google.com/forum/?fromgroups=#!topic/sass-lang/MfPZyWRRPZk – cimmanon

+0

thật đáng buồn, Cimmanon đúng, điều này là không thể: (... điều này giống như một đứa trẻ thất vọng khi anh ấy xem siêu anh hùng của mình trong trang phục nữ :) – equivalent8

Các vấn đề liên quan