2012-10-29 38 views
14

Trang web của tôi có nhiều hoạt ảnh và chuyển tiếp CSS, tất cả đều hiển thị rất, rất chậm trong các trình duyệt nhất định (may mắn, không phải hầu hết trong số chúng) và phần cứng cũ hơn. Tôi đang cố tránh UA ngửi; có cách nào để phát hiện các trình duyệt hoặc cấu hình phần cứng bằng JavaScript hay thư viện JS và sau đó tải các phiên bản không hoạt ảnh cho các trình duyệt mà tôi biết không có hỗ trợ tốt cho các tính năng đó không?Phát hiện phần cứng chậm/trình duyệt chậm với JavaScript

Chỉ để làm sáng tỏ mọi sự mơ hồ, tôi không tìm kiếm thứ gì đó như Modernizr.

+1

tôi sẽ đề nghị viết một số phát hiện thời gian cho mình, cho nhu cầu cụ thể của bạn. "Slow" là quá nhiều của một generalisation, đặc biệt là khi một số thiết bị và phần cứng có gia tốc cho các tính năng cụ thể. – Brad

+2

Tôi muốn cung cấp một tùy chọn cho người dùng để tắt các hoạt ảnh như vậy hơn là trải qua những rắc rối khi phát hiện "phần cứng chậm" có thể không chính xác theo ý thích của người dùng. –

+1

@FabricioMatte: trong khi mang lại cho người dùng sự linh hoạt hơn đáng ngưỡng mộ, nếu một cái gì đó * thực sự * chậm trên hộp của tôi và không phải là một mặt hàng quan trọng (ví dụ: thanh toán hóa đơn/ngân hàng), tôi sẽ không bận tâm tìm cách vô hiệu hóa nó mà là giết tab ngay tại chỗ. –

Trả lời

3

Đây là không phải là đủ để phát hiện một hệ thống chậm, nhưng sẽ giảm thiểu tác động đối với những người sử dụng hệ thống như vậy:

Use CSS transitions và kích hoạt chúng với jQuery (bằng cách chuyển đổi qua lại các lớp học khi cần thiết), giảm tải yếu tố hình động cho công cụ hiển thị sao cho đáp ứng chức năng của trang sẽ không bị ảnh hưởng ít nhất.

Sử dụng các thuộc tính CSS đúng CSS. Ví dụ: thay vì hoạt ảnh top:10px;left:10px; thuộc tính, hãy sử dụng CSS transformtransform: translateX(10px) translateY(10px) sẽ hiệu quả hơn.

Tăng tốc phần cứng (GPU) kích hoạt bằng cách thêm transform: translate3d(0,0,0); hoặc cách giải quyết tương tự cho phần tử đích.

Nếu bạn đang hoàn toàn gắn liền với hình ảnh động, hoặc cần phải kích hoạt chức năng dự phòng (ẩn/hiển thị/đặt lại vị trí các yếu tố) mà không CSS cho một số lý do, you could try a Modernizr workaround:

if(!Modernizr.csstransitions) { 
    /*fallback logic*/ 
} 
+0

Tôi sử dụng chuyển đổi CSS và biến đổi và quen thuộc với công nghệ. Bạn có thể giải thích về việc kích hoạt quá trình chuyển đổi và chuyển đổi với jQuery không? – Jules

+0

@Verandaguy: Tôi có nghĩa là jQuery có thể được sử dụng để điều chỉnh các giá trị thuộc tính "cuối cùng" (đang hoạt hình theo hướng) như trái ngược với việc điều chỉnh giá trị thuộc tính "trung gian" lặp đi lặp lại. Có lẽ điều này được giải thích rõ hơn trong [ví dụ kỹ lưỡng] (http://www.the-art-of-web.com/javascript/css-animation/)? –

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