2011-10-23 27 views
13

Mỗi khi tôi truy cập một trang có hoạt ảnh CSS3, sổ ghi chép của tôi trở nên ồn ào (cho tôi một tín hiệu rằng nó thực hiện một số công việc nặng nhọc trên đó). Tôi sẽ không quan tâm bản thân mình nếu ít nhất là kết quả hình ảnh động là đủ mịn. Nhưng họ thì không. Những gì tôi nhận được là kết quả của tôi 2.4 GHz Core 2 Duo với 8GB RAM và dành riêng NVIDIA GeForce 320M (không nhiều, nhưng nên là đủ cho một số css, không? ...) là một số jerky, ngẫu nhiên nhấp nháy, trong một số trường hợp có hiện vật kỳ lạ ... "hoạt hình", thường tồi tệ hơn khi đó là JS tương đương ...Hoạt ảnh và hiệu suất CSS3: có điểm chuẩn nào không?

Có ai thực hiện bất kỳ so sánh nào giữa hoạt ảnh JS và CSS không? Hoặc điểm chuẩn của các goodies CSS3 được đề xuất để sử dụng trong thế giới thực (ví dụ như bao nhiêu trong số chúng có thể trên trang đồng thời mà không bị treo nghiêm trọng, v.v ...)? Có bất kỳ thực hành tốt nhất nào (như - làm điều này, không làm điều đó, hoặc trình duyệt của bạn sẽ thu thập thông tin - và như vậy)?

Trả lời

12

CSS3 sử dụng tăng tốc GPU trong một số trình duyệt, có nghĩa là nếu bạn có thẻ GFX tuyệt vời, sẽ cho kết quả hoạt ảnh mượt mà, nhanh chóng. Nơi CSS/JQ sử dụng bộ nhớ của bạn.

Vì vậy, tôi không thực sự nghĩ rằng việc so sánh thử nghiệm điểm chuẩn có thể thực hiện được.

Giới thiệu về số lượng hoạt ảnh bạn có thể sử dụng, với trình duyệt được cập nhật thường xuyên và phần cứng là yếu tố, sẽ rất khó để thực hiện "hướng dẫn sử dụng" như vậy.

đã không thấy bất kỳ cho JS hoặc :)

Để biết thêm về khả năng tăng tốc GPU see:

http://www.html5rocks.com/en/tutorials/speed/html5/#toc-hardware-accell

Có một số điều tuyệt vời về đề tài này mặc dù:

http://www.netmagazine.com/opinions/css3-vs-javascript

http://www.whatcreative.co.uk/blog/tips/the-benefits-of-css3-vs-jquery/

+0

Tôi nghi ngờ rằng một số hoạt ảnh CSS3 "nặng hơn" trên GPU so với bất kỳ trò chơi máy tính nào từ năm 1999. toán học là siêu đơn giản so với những điều điên trò chơi yêu cầu 10 năm trước đây, do đó, trên thực tế, vấn đề tốc độ chỉ là triển khai của trình duyệt với CSS-> GPU. nhưng tôi chỉ đoán thôi. – vsync

+0

Đúng. Nhưng tôi đoán đó là khoảng bao nhiêu "sức mạnh" một trình duyệt sẽ có thể đi từ thiết bị của một người.Hãy tưởng tượng trình duyệt nên sử dụng tất cả GPU của bạn như một trò chơi, sau đó nghĩ đến những người lạm dụng/lạm dụng điều này. Vì vậy, hy vọng các trình duyệt có được tốt hơn trong việc xử lý việc sử dụng GPU, nhưng tôi đoán có một lý do tại sao fading đơn giản/hình ảnh động là như vậy đòi hỏi. –

18

Tôi đã thực hiện một vài dự án với chuyển tiếp CSS3 và Jquery .animate() dự phòng khi CSS3 không được hỗ trợ.

Tôi đã ba máy tính thử nghiệm bên cạnh của riêng tôi:

  • một máy tính xách tay hơn 6 năm (chạy XP, Athlon 1800+ và 768Mo của Ram)
  • một máy tính xách tay 3 năm (chạy Crappy Vista và một dual Core CPU Intel với 2Go của Ram)
  • một máy tính để bàn franken (một vài hệ điều hành được cài đặt với một P4 và 1Go của ram)

những gì tôi quan sát thấy là hầu hết các lần, CSS3 thực hiện tốt hơn.

Ý tôi là "thực hiện tốt hơn" là tôi "không cảm thấy tốt hơn": Tôi đã không cố gắng đánh giá các mức độ hoàn hảo, cũng như áp dụng phương pháp thử nghiệm khoa học và quan sát của tôi không được thực hiện nhiều hơn cảm thấy. Cũng lưu ý rằng tôi chủ yếu sử dụng CSS3 chuyển tiếp và không CSS3 Animations (tức là với khung hình chính).

Tuy nhiên, "tốt hơn" không có nghĩa là "luôn luôn tốt". Trên các máy tính cũ hơn, Javascript và CSS3 đều bị lag. Nếu trang web của bạn là JS hoặc CSS3 nặng, IE trước phiên bản 9 luôn là trải nghiệm kém, IE trước phiên bản 8 luôn là một cơn ác mộng thực sự. Firefox trước v4 thì tốt hơn nhưng hoàn hảo hơn nhiều so với các máy tính cũ.

Trong mọi trường hợp, CSS3 phải được áp dụng chính xác: ví dụ: tôi thấy rằng fading div thành opacity: 0 không hiển thị cài đặt: none khi hoàn thành luôn là ý tưởng tồi ... Chuyển đổi CSS3 khá mới không thực hành tốt nhất tồn tại, đó là bản dùng thử và lỗi hiện tại.

Trên thiết bị di động hiện đại (tôi sở hữu một vài thiết bị IOS, Android và BBOS), CSS3 luôn tốt hơn Javascript: trên iPad 1, đơn giản $ ('img'). FadeOut() có thể khá xấu xí khi quá trình chuyển đổi CSS3 trở nên sạch sẽ.

Vì vậy, để kết luận, cá nhân (và hạn chế) kinh nghiệm của tôi nói:

  • css3 thường tốt hơn so với Js, đặc biệt là cho các thiết bị di động hiện đại
  • mặc dù cả hai đều xấu trên các máy tính nghèo/trình duyệt kết hợp khi sử dụng quá mức
  • như thường lệ, tùy thuộc vào người dùng của bạn. Nếu họ có nhà nước của Macbook nghệ thuật, bạn có thể sử dụng rất nhiều hình ảnh động mà không sợ hãi. Nếu chúng được trang bị kém, hoạt ảnh có thể cản trở trải nghiệm duyệt web của họ.
  • Tôi nghĩ rằng tốt nhất là để làm hiệu ứng chuyển tiếp CSS3 với một fallback Jquery nếu không được hỗ trợ, và giữ 'em đơn giản (tức là không tạo hiệu ứng động bốn thuộc tính trên ba yếu tố khác nhau cùng một lúc)

Tôi hy vọng nó giúp.

2

Sau khi sử dụng hoạt ảnh css trong môi trường sản xuất cho một số dự án, tôi phải nói rằng đó là một nỗi đau.

Tôi cũng sử dụng TweenLite, thư viện hoạt hình yêu thích mà tôi đã sử dụng trong Flash trước đây và đã được viết lại cho javascript và CSS.

Bây giờ tôi có đủ kinh nghiệm với hoạt ảnh html5, tôi có thể nói chắc chắn TweenLite là công cụ thích hợp nhất. Hình ảnh TweenLite hầu như luôn mượt mà nhất.

tôi chạy những thử nghiệm vì bài viết này mà các nhà phát triển chỉ viết:

http://www.greensock.com/transitions/

GSAP lợi dụng requestAnimationFrame và là siêu được tối ưu hóa. Nó có hiệu suất tương đương css3 với api tốt hơn nhiều để sắp xếp, kiểm soát, gọi lại ...

Một vấn đề được lựa chọn! Tôi đã làm của tôi.

2

Đây là mới (từ tháng 12 năm 2012), bằng cách Greensock: http://www.greensock.com/js/speed.html

Bạn có thể chuẩn và so sánh hình ảnh động css3 với hình ảnh động javascript trên các khuôn khổ như jQuery, YUI, Zepto, Mootools, Dojo, TweenJS và GSAP, quá.

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