2009-12-22 31 views
30

Tôi đã học được rằng cách tốt nhất là chỉ định rõ kích thước hình ảnh. Sau đó, trình duyệt có thể đã bố trí trang trong khi vẫn tải xuống hình ảnh, do đó cải thiện thời gian hiển thị trang (percieved).Nơi để chỉ định kích thước hình ảnh để hiển thị nhanh nhất: trong HTML hoặc trong CSS?

Điều này có đúng không? Và nếu có, có sự khác biệt trong việc chỉ định kích thước trong HTML hoặc CSS không?

  • HTML: <img src="" width="200" height="100">
  • Inline CSS: <img src="" style="width: 200px; height: 100px">
  • CSS bên ngoài: #myImage { width: 200px; height: 200px; }

Trả lời

33

Theo Google Page Speed, nó không thực sự quan trọng nếu bạn chỉ định kích thước thông qua CSS hoặc HTML, miễn là CSS bạn nhắm mục tiêu các thẻ IMG chính nó và không phải là một yếu tố phụ huynh:

Khi trình duyệt đưa ra trang, nó cần để có thể chảy xung quanh các yếu tố thay thế như hình ảnh. Nó có thể bắt đầu hiển thị một trang ngay cả trước khi hình ảnh được tải xuống, miễn là nó biết kích thước để bọc các phần tử không thể thay thế xung quanh. Nếu không có thứ nguyên nào được chỉ định trong tài liệu chứa hoặc nếu kích thước được chỉ định không khớp với hình ảnh thực tế, trình duyệt sẽ yêu cầu chỉnh lại và vẽ lại khi hình ảnh được tải xuống. Để ngăn các bản sao lưu, hãy chỉ định chiều rộng và chiều cao của tất cả các hình ảnh, trong thẻ HTML hoặc trong CSS.

Tuy nhiên, lưu ý rằng họ khuyên không thay đổi kích thước hình ảnh sử dụng các kích thước, tức là luôn luôn sử dụng các kích thước thực:

Không sử dụng thông số kỹ thuật width và height để mở rộng hình ảnh một cách nhanh chóng. Nếu tệp hình ảnh thực sự là 60 x 60 pixel, không đặt kích thước thành 30 x 30 trong HTML hoặc CSS. Nếu hình ảnh cần nhỏ hơn, hãy mở rộng hình ảnh trong trình chỉnh sửa hình ảnh và đặt kích thước của hình ảnh để khớp (xem hình ảnh Tối ưu hóa để biết chi tiết.)

+0

Đây là loại câu trả lời tôi đang tìm kiếm. Nhưng, đến từ Google, điều này cũng chỉ áp dụng cho Chrome hay các trình duyệt khác? – Daan

+4

Google không phân biệt đối xử giữa các trình duyệt. Không bao giờ. –

+1

Tôi không thể nói cho họ, nhưng tôi không nghĩ rằng họ sẽ phân biệt đối xử giữa các trình duyệt. Tốc độ trang của Google nhằm tăng tốc toàn bộ Internet và cho tất cả người dùng, do đó đưa ra lời khuyên cụ thể cho trình duyệt của họ (có thị phần rất thấp) sẽ không hữu ích ... – Wookai

1

Tôi nghĩ CSS giúp bạn linh hoạt hơn: bạn đặc biệt có thể thiết lập chiều rộng hoặc chiều cao trong khi thiết lập các kích thước khác đến auto. Nhưng khi đặt cả hai chiều, tôi không có gì khác biệt.

+0

Thực ra bạn cũng có thể làm điều đó với HTML bằng cách bỏ qua một thuộc tính! Tuy nhiên CSS cung cấp cho bạn sự linh hoạt hơn trong đó bạn cũng có thể sử dụng 'min-width',' max-height' et al. – bobince

+1

Trong hầu hết các trình duyệt, nếu bạn chỉ đặt một chiều, trình duyệt khác sẽ tự động theo mặc định. –

3

Tôi có xu hướng làm điều đó trong CSS. Điều này chắc chắn là một chiến thắng khi có nhiều hình ảnh có cùng kích thước (vì vậy bạn có thể thực hiện các công cụ như .comment img.usergroup { width: 16px; height: 16px; }) và có cùng hình ảnh theo tỷ lệ trong các bảng kiểu khác nhau như chủ đề có thể chọn người dùng.

Khi bạn có hình ảnh hoàn toàn độc lập chỉ được sử dụng trên trang web một lần, không thực sự có ý nghĩa khi trừu tượng hóa kích thước của chúng ra CSS, vì vậy phiên bản HTML có thể phù hợp hơn ở đó.

+0

“có cùng hình ảnh theo tỷ lệ trong các bảng định kiểu khác nhau” - nghĩa là các tệp hình ảnh giống nhau không? Bạn không tìm thấy chúng có xu hướng trông hơi giống một chút trong IE? –

+0

Điều này có ý nghĩa từ quan điểm mã hóa/bảo trì, nhưng trong trường hợp này tôi đặc biệt quan tâm đến hiệu suất kết xuất: phương pháp nào khiến trang hiển thị nhanh nhất? – Daan

+1

@Paul: không nhất thiết; một số hình ảnh như GIF màu khối đơn giản có thể được thiết kế đặc biệt để được thu nhỏ. Plus trong IE7 + bạn nhận được nội suy bicubic tùy chọn vì vậy vật liệu khác không cần phải nhìn xấu. @ Danan: sẽ không có sự khác biệt có thể đo lường được. Trong các trình duyệt khác nhau, HTML hoặc CSS có thể về mặt lý thuyết có đường dẫn trực tiếp hơn đến trình kết xuất đồ họa (trong Firefox, đó là CSS), nhưng sự khác biệt sẽ vượt quá giới hạn. – bobince

1

Nếu bạn đặt một hình ảnh lớn trong trang HTML không có thứ nguyên, bạn chắc chắn nên chú ý đến việc chuyển trang bố cục khi hình ảnh được tải xuống (qua kết nối internet, nếu không phải cục bộ).

Theo câu trả lời khác, nó không tạo ra nhiều khác biệt cho dù bạn làm điều này trong HTML hay CSS.

+2

Nhiều trình duyệt đã thắng không hiển thị bất cứ điều gì trước khi CSS được phân tích cú pháp. Chắc chắn CSS sẽ ngừng hoạt động trước hình ảnh. (Xem ‘flash nội dung chưa được lưu trữ’ để thảo luận về thời điểm điều này không xảy ra.) – bobince

+0

Vâng, đó là sự thật. –

1

Điều này không trả lời trực tiếp câu hỏi của bạn, nhưng tôi sẽ không dựa vào kích thước của hình ảnh của bạn để bố cục trang. Thay vào đó, hãy bao gồm hình ảnh trong phần tử cấp khối. Điều này làm giảm cả HTML và CSS từ việc phải giữ thông tin mà nó thực sự không nên vì hình ảnh có thể thay đổi theo thời gian.

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