2013-03-12 16 views
6

Tại thời điểm này tôi phải liệt kê tất cả các biến:Có cách nào ngắn để liệt kê các khung hình chính CSS3 với các tiền tố của nhà cung cấp không?

@-webkit-keyframes show { 
    from { background-color: rgba(0, 0, 0, 0); } 
    to { background-color: rgba(0, 0, 0, 0.8); } 
} 

@-moz-keyframes show { 
    from { background-color: rgba(0, 0, 0, 0); } 
    to { background-color: rgba(0, 0, 0, 0.8); } 
} 

[…] 

Bạn nhận được các ý tưởng. Có cách nào để viết ngắn hơn không? Một cái gì đó như thế này mà không được phá vỡ nó:

@-webkit-keyframes show, @-moz-keyframes show {} 
+1

Ít nhất đối với bộ chọn, quy tắc là nếu bất kỳ bộ chọn nào cho quy tắc cho không hợp lệ, thì toàn bộ quy tắc phải bị loại bỏ - [tham chiếu] (http://www.w3.org/TR/selectors/# grouping). Tôi đoán rằng quy tắc tương tự sẽ áp dụng ở đây. Vì trình duyệt webkit sẽ không thấy '@ -moz ...' là hợp lệ, nên nó sẽ làm giảm toàn bộ và ngược lại. –

Trả lời

6

Không natively trong CSS nhưng bạn có thể thực hiện điều này bằng cách sử dụng một tiền xử lý CSS, ví dụ LESS mà hỗ trợ các khái niệm về "mixins" để loại bỏ một số trùng lặp.

Thông tin thêm có thể được tìm thấy here, đặc biệt là ví dụ từ bài viết:

@-webkit-keyframes some-animation {.mixi-frames;} 
@-moz-keyframes some-animation {.mixi-frames;} 

.mixi-frames() { 
    from {width: 254px;} 
    to {width: 512px;} 
} 
+0

Vâng, tôi đã nghĩ đến * LESS * là cách duy nhất để thực hiện điều này. – insertusernamehere

+1

Có thể hữu ích khi đề cập đến điều đó! – andyb

+1

Đúng vậy. Lấy làm tiếc. Tôi đang tìm kiếm một giải pháp bản địa và bạn đã trả lời với câu đầu tiên của mình. Vì vậy: Cảm ơn. :) – insertusernamehere

2

Như đã nêu trong câu trả lời được chấp nhận, các bản mix trong bộ tiền xử lý CSS đã được nhà nước nghệ thuật giải quyết vấn đề này một thời gian trước đây.

Nhưng may mắn thay đổi và công cụ ngày càng tốt hơn. Các khung như Bootstrap chuyển sang các công cụ như autoprefixer, thêm tiền tố nhà cung cấp tự động vào css của bạn. Bằng cách này bạn không cần phải suy nghĩ một giây về tiền tố nhà cung cấp nữa và bạn vẫn cập nhật.

Autoprefixer sử dụng dữ liệu từ caniuse.com để tự cập nhật và bạn chỉ cần chỉ định trình duyệt nào bạn muốn hỗ trợ và bạn không cần phải quan tâm nữa. Nếu bạn chưa chuyển sang tự động hóa tác vụ Grunt, bây giờ là lúc để thử, vì cũng có sẵn tác vụ grunt-autoprefixer.

+0

1 giải pháp tốt đẹp. – insertusernamehere

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