2013-06-25 20 views
26

Tôi đang xây dựng trang web đang sử dụng plugin cuộn về cơ bản sẽ làm động việc cuộn. Tôi khá lo lắng về hiệu suất như thể tôi chèn một số hình ảnh vào trang web, có vẻ khá thay đổi khi cuộn/hoạt hình.<img /> so với hình nền (css) trong hiệu suất

Vấn đề chính tôi có thể phát hiện bằng hình ảnh là vấn đề reflow/repaint, khi hình ảnh không có kích thước chính xác và do đó được chia tỷ lệ (tôi phải giải quyết vấn đề này, tôi biết về số best practice).

Với lưu ý này (hình ảnh sẽ được thu nhỏ). Điều gì sẽ tốt hơn, yếu tố hình ảnh hoặc divs với những hình ảnh làm nền cho hiệu suất?

Tôi đã thực hiện jsFiddles này trong công cụ bộ nhớ trình duyệt chrome của tôi, cho thấy tùy chọn hình ảnh nền mặt đất sử dụng ít bộ nhớ hơn.

<img />: http://jsfiddle.net/ek6Xn/

<img src="..." /> 

background-image: http://jsfiddle.net/ek6Xn/1/

<div></div> 
div { 
    background:url(...); 
    background-size:100% 100%; 
} 

Tài liệu tham khảo:

  1. Difference in performance between img tag elements vs divs with background images?
  2. When to use IMG vs. CSS background-image?
  3. http://www.html5rocks.com/en/tutorials/speed/unnecessary-paints/
  4. http://updates.html5rocks.com/2013/02/Profiling-Long-Paint-Times-with-DevTools-Continuous-Painting-Mode
+0

Ngoài ra, công cụ tìm kiếm và hệ thống nhúng truyền thông xã hội không thích hình nền css. –

+0

Bạn có thể giải thích lý do tại sao? – Alvaro

+0

Họ chỉ đơn giản là không lưu trữ chúng hoặc, trong trường hợp nhúng facebook, nó không được coi là hình ảnh ngón tay cái trong khi chia sẻ. –

Trả lời

19

Cá nhân tôi sẽ quên về hiệu suất trong trường hợp này và tập trung vào nội dung bức ảnh:

1) Image = nội dung

2) Nền Im age = design

Cách tôi có xu hướng nghĩ về điều này là, tôi có muốn hình ảnh xuất hiện trên tất cả các kích thước màn hình, trên tất cả các thiết bị, bật hoặc tắt CSS? Tôi muốn hình ảnh được "lập chỉ mục" bởi Google và Facebook. Nếu câu trả lời là có cho tất cả hoặc bất kỳ câu hỏi nào trong số này, thì thường là hình ảnh là "nội dung" và bạn nên sử dụng thẻ IMG.

Nếu bạn muốn một hình ảnh khác hiển thị ở các kích cỡ màn hình khác nhau (hoặc không có hình ảnh nào trên một số thiết bị) hoặc nếu bạn vui vì hình ảnh không xuất hiện trên bản in hoặc bạn đang hạnh phúc hình ảnh không xuất hiện nếu CSS bị tắt, sau đó thường là hình ảnh "thiết kế" và bạn nên sử dụng hình nền.

+3

Tóm tắt ngắn gọn, tuyệt vời về tình hình. Rất hữu ích trong thanh toán bù trừ khi sử dụng cái nào. – VisWebsoft

+26

xin lỗi, nhưng hầu như không dễ chịu. câu hỏi được tập trung vào hiệu năng và phản hồi 1) 2 hoàn toàn không liên quan trong phạm vi này. Lần 2 - css bị tắt? có thật không? vào năm 2015, trong ứng dụng web phong phú, chúng tôi thực sự xem xét tùy chọn này? xin lỗi, nhưng điều này có vẻ hoàn toàn không liên quan đến câu hỏi. –

+0

Câu trả lời đã được đăng trong năm 2013 nhưng cùng một điều áp dụng ngay bây giờ - CSS là dành cho thiết kế/bố trí không cho nội dung. Hãy tiếp tục và phục vụ nội dung bằng cách sử dụng CSS trên cơ sở không ai sẽ tắt nó - điều đó không làm cho điều đúng là làm – MrCarrot

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