2013-04-10 37 views
6

Tôi đang tạo một trang web di chuyển thị sai (không phải tất cả chúng ta) trong số những thứ khác, cho thấy hình ảnh khi người dùng cuộn.Hình ảnh Thời gian giải mã từ công cụ tạo thời gian của Chrome

Tôi đã thực hiện 'tiết lộ' bằng cách đặt hình ảnh ở chế độ nền và đặt một div được tô đầy trên đầu. Sau đó tôi tạo hiệu ứng này div từ 100% chiều cao đến 0% chiều cao dựa trên vị trí cuộn, do đó tiết lộ hình nền.

Tôi đang làm điều này nhiều lần và rất tiếc là tôi đang bị chậm lại.

Sử dụng tính năng Dòng thời gian được tích hợp sẵn của Chrome, tôi có thể thấy rằng hầu hết sự chậm trễ này là từ Giải mã hình ảnh. Đối với các tiết lộ ở trên, nó tái giải mã hình ảnh mỗi khung hình, trong đó mất 22ms cho mỗi hình ảnh cho mỗi khung hình.

Có ai biết khi nào trình duyệt cần thực hiện Giải mã hình ảnh hay không và khi nào thì không? Có vẻ như rõ ràng với tôi rằng nó sẽ cần phải nếu tôi thay đổi kích thước hình ảnh, nhưng không phải là nó sẽ cần phải khi tôi chỉ cần một nửa bao gồm hình ảnh?

Cảm ơn sự giúp đỡ của bạn.

Trả lời

1

Làm cách nào để tạo hiệu ứng cho thuộc tính? Tôi nghĩ bạn có thể có nhiều lựa chọn thay thế để chỉ làm nổi bật chiều cao (đó là một số loại thay đổi kích thước của vùng chứa).

Có thể ít tốn kém hơn để chỉ 'clip' hình nền với phần tử khác. Tôi tìm thấy một chủ đề về nó trên StackOverflow với một số gợi ý. Nếu bạn sinh động với javascript, không may yếu tố giả là không có lựa chọn ...

Clip/Crop background-image with CSS

+0

Hi Nirazul, tôi tạo ảnh động chiều cao của div bao phủ bằng javascript. Tôi sẽ xem liệu phương thức clip có hoạt động khác và cho bạn biết không. –

+0

Rất cám ơn Nirazul, tôi thấy rằng việc sử dụng clipping để ẩn hình ảnh là một cách hiệu quả hơn nhiều so với hiển thị: không, hoặc di chuyển hình ảnh ra khỏi màn hình, hoặc di chuyển hình ảnh chủ yếu ra khỏi màn hình - ít hơn Hình ảnh Giải mã được kích hoạt trong Chrome. Tuy nhiên, tôi chưa đánh dấu câu hỏi này là câu trả lời cho câu hỏi SO thực sự là: "Có ai biết khi nào trình duyệt cần thực hiện Giải mã hình ảnh hay không và khi nào thì không?" nhưng câu trả lời của bạn rất hữu ích để cảm ơn bạn. –

3

tôi đã chiến đấu với vấn đề này rất nhiều cũng có. Như tôi chưa tìm thấy bất cứ điều gì cụ thể và giải pháp đề xuất của tôi dường như không hoạt động trong TẤT CẢ các trường hợp và tôi đã không thể xác định được lý do tại sao.

Dù sao ...

Dường như khi bạn animate một yếu tố rắn trên đầu của một hình ảnh, chrome buộc một recode của hình ảnh.

Có hai điều tôi đã thử và phần lớn họ đã thành công.

  1. Nếu bạn thêm -webkit-transform : translate3d(0,0,0) đến các yếu tố bao phủ, bạn nên tìm thấy hầu hết, nếu không phải tất cả các hình ảnh giải mã biến mất.

  2. Nếu việc thêm CSS ở trên vào chính phần tử bao phủ không có tác dụng, hãy thử thêm nó vào hình ảnh thay vào đó hoặc thực sự thử thêm nó vào cả hai phần tử.

Hiểu biết của tôi là sử dụng thuộc tính 3d css đẩy hình ảnh vào lớp tổng hợp của nó được lưu trữ và xử lý bởi GPU chứ không phải trình kết xuất phần mềm trình duyệt.

90% thời gian tôi đã tìm thấy một trong các kết hợp ở trên thành công. Tôi hy vọng nó sẽ giúp.

+0

Hi Gordyr, cảm ơn phản hồi. Tôi nhớ đã thử các biến đổi webkit để GPU lấy căng thẳng, nhưng tôi không nghĩ rằng điều này đã giải quyết được vấn đề của tôi - có thể là do thời gian khởi tạo gây ra nhiều đau đầu hơn, nhưng thành thật mà nói, tôi có thể 't khá nhớ tại sao nó không hoạt động. Cuối cùng tôi đã làm cho nó hoạt động khá tốt bằng cách sử dụng các phương pháp khác nhau cho các mục khác nhau. Ở đây nó là trong hành động: http://www.patentise.com/ –

+0

Vui mừng khi nghe bạn đã nhận nó được sắp xếp :-) Nó trông và hoạt động tuyệt vời bằng cách này. – gordyr

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