2012-07-24 32 views
30

(điều này có thể đã được trả lời - không thể tìm thấy câu trả lời)Có lợi thế trong việc nhóm các truy vấn phương tiện css với nhau không?

Ghi đè truy vấn @media truyền thống có xu hướng nhóm tất cả ghi đè cho một kích thước/phương tiện trong cùng một nhóm khung.

ví dụ:

.profile-pic { 
    width:600px; 
} 
.biography { 
    font-size: 2em; 
} 

@media screen and (max-width: 320px) { 
    .profile-pic { 
     width: 100px; 
     float: none; 
    } 
    .biography { 
     font-size: 1.5em; 
    } 
} 

Trong Sass, có một cách thực sự tiện lợi để viết @media ghi đè truy vấn trong việc kê khai lồng nhau, như vậy:

.profile-pic { 
width:600px; 
    @media screen and (max-width: 320px) { 
    width: 100px; 
    float: none; 
    } 
} 

.biography { 
    font-size: 2em; 
    @media screen and (max-width: 320px) { 
    font-size: 1.5em; 
    } 
} 

bây giờ, khi biên soạn, sass không nhóm truy vấn @media khối với nhau, vì vậy sản lượng kết thúc lên được một cái gì đó như thế này:

.profile-pic { 
    width:600px; 
} 
@media screen and (max-width: 320px) { 
    .profile-pic { 
    width: 100px; 
    float: none; 
    } 
} 

.biography { 
    font-size: 2em; 
} 
@media screen and (max-width: 320px) { 
    .biography { 
    font-size: 1.5em; 
    } 
} 

tôi đã sử dụng kỹ thuật này cho một dự án gần đây và khi bạn áp dụng nguyên tắc đó để một dự án lớn hơn nhiều bạn kết thúc với mu ltiple @media phần truy vấn phổ biến trong suốt css của bạn (tôi đã có khoảng 20 cho đến nay).

Tôi khá thích kỹ thuật sass vì nó giúp dễ dàng theo dõi luồng ghi đè (và cũng giúp di chuyển mọi thứ dễ dàng hơn).

Tuy nhiên, tôi tự hỏi liệu có bất kỳ bất lợi nào trong việc có nhiều phần @media thông qua CSS, đặc biệt là hiệu suất khôn ngoan không?

Tôi đã thử trình thu thập css chrome nhưng tôi không thể thấy bất kỳ điều gì cụ thể cho truy vấn @media.

(More info on @media in sass on this page)

Trả lời

16

Một chút muộn để đảng, nhưng dựa trên các bài kiểm tra dưới tác động hiệu quả dường như là tối thiểu. Thử nghiệm hiển thị thời gian hiển thị cho một trang mẫu với 2000 truy vấn phương tiện riêng biệt và kết hợp, tương ứng.

http://aaronjensen.github.com/media_query_test/

Lợi ích chính có vẻ là trong kích thước tập tin hơn bất cứ thứ gì khác - đó, nếu bạn đang nén CSS của bạn cho sản xuất, sẽ được giảm đáng kể anyway.

Nhưng cuối cùng, như các bài liên kết dưới đây đặt nó:

"Nếu bạn có 2000 + truy vấn phương tiện truyền thông trong CSS của bạn, tôi nghĩ rằng bạn có thể muốn xem xét lại chiến lược phát triển giao diện người dùng của bạn so với sử dụng một viên ngọc để tái xử lý CSS của bạn. "

Blog bài chi tiết vấn đề này: http://sasscast.tumblr.com/post/38673939456/sass-and-media-queries

+0

Cảm ơn bạn đã tham khảo này, đó là tại chỗ trên. Nice tìm. Đã thử nghiệm truy vấn 2000 lần nhiều lần trên Chrome trên iPhone 4s và dường như không có bất kỳ sự khác biệt đáng kể nào .. – Ben

1

Tôi cho rằng chỉ có để chạy kiểm tra phương tiện truyền thông truy vấn một lần (và sau đó tải tất cả các phong cách bên trong nó) sẽ ít thuế hơn kiểm tra trên tất cả các selector nhưng tôi đã không có khó khăn bằng chứng về điều này. Nếu bạn nhận được Canary release of Chrome, có các công cụ truy vấn phương tiện trong đó.

Như bạn đang sử dụng Sass bài viết này có thể là một số lợi ích - http://css-tricks.com/media-queries-sass-3-2-and-codekit/

+0

Cảm ơn. Tôi không sử dụng codekit nhưng cảm ơn, những người khác có thể thấy nó hữu ích. Về vấn đề thả chim hoàng yến, bạn đang đề cập đến những công cụ cụ thể nào? – Ben

+0

Có một kiểm toán mới trong đó cho bộ chọn CSS cho bạn biết phải mất bao lâu để chạy. Có thể hữu ích. – SpaceBeers

+0

Tôi đã có Canary nhưng không may mắn. Bạn đang đề cập đến tab _Profiles_ trong công cụ dev? Ngoài ra còn có một tab Kiểm toán riêng biệt, nhưng dường như không bao gồm bất kỳ điều gì cho các truy vấn phương tiện. – Ben

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