Khi nào nên sử dụng hình ảnh nền so với CSS?


777

Trong trường hợp nào thì thích hợp hơn để sử dụng IMGthẻ HTML để hiển thị hình ảnh, trái ngược với CSS background-imagevà ngược lại?

Các yếu tố có thể bao gồm khả năng truy cập, hỗ trợ trình duyệt, nội dung động hoặc bất kỳ loại giới hạn kỹ thuật hoặc nguyên tắc khả dụng nào.


Bạn có cần hình ảnh để chiếm không gian hoặc bạn muốn viết lên nó?
geowa4

9
Là một bản cập nhật, vì thứ hạng này khá cao trên Google, hiện có thể mở rộng trình duyệt và mở rộng hình ảnh cho hình nền và được hỗ trợ khá rộng rãi (IE8 trở xuống, ngoại trừ), hiển thị các mục 4 và 7 trong trường hợp có thể cho phép dự phòng hoặc bỏ qua hiệu ứng như vậy cho IE8 trở xuống. caniuse.com/#search=background-image
Shauna

bài đăng tuyệt vời và hữu ích, tôi sẽ thêm một câu hỏi để so sánh, lợi thế của css cũng là hiệu ứng di chuột? điều này có thể được sao chép bằng cách sử dụng thẻ img?
ericosg

Tôi thường thêm cả thuộc tính alt và thuộc tính tiêu đề cho tất cả các hình ảnh nội dung. Đây có phải là không thích hợp?
HartleySan

2
Ngoài ra img có thể có bản đồ với các khu vực và gợi ý có thể nhấp
Vitim.us

Câu trả lời:


797

Sử dụng đúng cách của IMG

  1. Sử dụng IMGnếu bạn có ý định để mọi người in trang của bạn và bạn muốn hình ảnh được bao gồm theo mặc định. - JayTee
  2. Sử dụng IMG(với altvăn bản) khi hình ảnh có ý nghĩa ngữ nghĩa quan trọng, chẳng hạn như biểu tượng cảnh báo . Điều này đảm bảo rằng ý nghĩa của hình ảnh có thể được truyền đạt trong tất cả các tác nhân người dùng, bao gồm cả trình đọc màn hình.

Sử dụng thực dụng của IMG

  1. Sử dụng IMGthuộc tính cộng với alt nếu hình ảnh là một phần của nội dung, chẳng hạn như logo hoặc sơ đồ hoặc người (người thật, không phải người có ảnh chứng khoán). - sanchothefat
  2. Sử dụng IMGnếu bạn dựa vào tỷ lệ trình duyệt để hiển thị hình ảnh theo tỷ lệ kích thước văn bản.
  3. Sử dụng IMG cho nhiều hình ảnh lớp phủ trong IE6 .
  4. Sử dụng IMGvới z-indexđể kéo dài hình nền để lấp đầy toàn bộ cửa sổ của nó.
    Lưu ý, điều này không còn đúng với kích thước nền CSS3; xem # 6 dưới đây.
  5. Sử dụng imgthay vì background-imagecó thể cải thiện đáng kể hiệu suất của hình ảnh động trên nền.

Khi nào nên sử dụng hình nền CSS

  1. Sử dụng hình nền CSS nếu hình ảnh không phải là một phần của nội dung . - sanchothefat
  2. Sử dụng hình nền CSS khi thực hiện thay thế hình ảnh văn bản, vd. đoạn văn / tiêu đề. - sanchothefat
  3. Sử dụng background-imagenếu bạn có ý định để mọi người in trang của bạn và bạn không muốn hình ảnh được bao gồm theo mặc định. - JayTee
  4. Sử dụng background-imagenếu bạn cần cải thiện thời gian tải xuống, như với các họa tiết CSS .
  5. Sử dụng background-imagenếu bạn chỉ cần một phần hình ảnh hiển thị, như với các họa tiết CSS.
  6. Sử dụng background-imagevới background-size:coverđể kéo dài một hình nền để lấp đầy toàn bộ cửa sổ của nó.

3
Tôi vẫn còn iffy trên hình nền cho phần thay thế văn bản. Tôi thấy mọi người sử dụng hình nền sau đó sử dụng văn bản thụt lề: -9999px cho văn bản. Tuy nhiên tôi biết rằng việc thụt lề văn bản như thế này từng rất tệ cho SEO và tôi tưởng tượng nó vẫn phải dành cho một số công cụ tìm kiếm. Nhưng quan trọng nhất, nếu bạn tắt hình ảnh nhưng để css trên hình ảnh biến mất nhưng văn bản vẫn tắt màn hình. Theo tôi thì văn bản thay thế trên một hình ảnh là nếu hình ảnh không được hiển thị để thẻ img tốt hơn.
Scott Reed

53
Sử dụng thực tế hình ảnh nền : Khi bạn không muốn rụng tóc về các vấn đề định tâm dọc (của hình ảnh có kích thước dọc khác nhau);)
Frank Nocke

12
Có, vấn đề định tâm dọc - mang theo Flexbox!
Dean_Wilson

3
@BinaryFunt - <div class="my-css-page-styles" style="background-image:url(blah.png);"></div>Bằng cách đó bạn có thể tạo kiểu cho nó trong biểu định kiểu CSS của mình nhưng nếu hình nền là câu hỏi về nội dung hơn là kiểu thì bạn vẫn đang chỉnh sửa nó từ khía cạnh HTML.
Jimbo Jonny

2
Dường như có một clickbait trong điểm 5 về cách sử dụng thực dụng của IMG - chỉ vào một bài đăng trên blog của Nhật Bản về mỹ phẩm. liên kết là www.ajaxline.com/browsers-performance-in-dependence-of-html-coding [KHÔNG NHẤP VÀO NÀY]
wick3d

292

Đó là một quyết định trắng đen đối với tôi. Nếu hình ảnh là một phần của nội dung như logo hoặc sơ đồ hoặc người (người thật, không phải người có ảnh chứng khoán) thì hãy sử dụng <img />thẻ cộng với thuộc tính alt. Đối với mọi thứ khác có hình nền CSS.

Lần khác để sử dụng hình nền CSS là khi thực hiện thay thế hình ảnh văn bản, vd. đoạn văn / tiêu đề.


Trường hợp tuyệt vời! CON - Sử dụng hình nền khi thực hiện thay thế hình ảnh của văn bản.
hệ thống PAUSE

2
Đây là một điểm công bằng, nhưng chắc chắn việc thay thế hình ảnh của văn bản (ví dụ cho tiêu đề) sẽ yêu cầu bạn thêm "alt" để trình đọc màn hình đọc nó? Hoặc trong trường hợp hình ảnh không được hiển thị, bạn vẫn nhận được tiêu đề? Vâng, một tiêu đề và sau đó theo kiểu sẽ tốt hơn, nhưng chắc chắn bạn muốn văn bản?
Theo Scholiadis

4
@TheoScholiadis sử dụng thay thế hình ảnh không có nghĩa là sử dụng hình ảnh thay vì văn bản, nhưng ẩn văn bản theo một cách nào đó bằng CSS và cung cấp hình ảnh làm nền bằng CSS. Các tài liệu vẫn còn chưa được xử lý.
roborourke

57
Cá nhân tôi ghét khi tôi không thể sao chép "văn bản" bởi vì nó thực sự là một hình ảnh. Gọi tôi là lười biếng nhưng này ...
Shaz

1
Khi bạn cần hình ảnh cho mục đích SEO, sau đó sử dụng thẻ img với thuộc tính alt. Nếu không, sử dụng hình ảnh trong nền bằng cách sử dụng css.
Siêu mẫu

107

Tôi ngạc nhiên không ai đề cập đến điều này: chuyển tiếp CSS .

Bạn có thể chuyển đổi divhình nền của một cách tự nhiên :

#some_div {
    background-image:url(image_1.jpg);
    -webkit-transition:background-image 0.5s;
    /* Other vendor-prefixed transition properties */
    transition:background-image 0.5s;
}

#some_div:hover {
    background-image:url(image_2.jpg);
}

Điều này tiết kiệm bất kỳ loại JavaScript hoặc jQuery hoạt hình mờ dần một <img/>'s src.

Thông tin thêm về chuyển đổi trên MDN .


3
Đó không phải là một lý do tốt. Bạn có thể có một div với 2 hình ảnh được phủ và css sau : #some_div { transition: opacity 0.5s; }, #some_div:hover #top_img { opacity: 0; }
warkentien2

5
Nếu bạn đọc bài viết MDN được liên kết đó (hoặc thông số w3c), bạn sẽ thấy rằng hình nền KHÔNG phải là một trong những thuộc tính có thể hoạt hình được và bất kỳ trình duyệt nào làm như vậy (chrome), không tuân theo các tiêu chuẩn web. Điều đó nói rằng, tôi nghĩ rằng nó nên như vậy, và nó là một hiệu ứng dễ dàng tốt đẹp vì vậy tôi thất vọng vì nó không phải là một phần của tiêu chuẩn.
Robert McKee

73

Trên câu trả lời chỉ xem xét khía cạnh thiết kế. Tôi đang liệt kê nó trong các khía cạnh SEO.

Khi nào sử dụng <img />

  1. Khi hình ảnh của bạn cần được lập chỉ mục bởi công cụ tìm kiếm
  2. Nếu nó có liên quan đến nội dung không thiết kế.
  3. Nếu hình ảnh của bạn không quá nhỏ (không phải hình ảnh mang tính biểu tượng).
  4. Hình ảnh nơi bạn có thể thêm alttitlethuộc tính.
  5. Hình ảnh từ một trang web mà bạn muốn in bằng phương tiện in css

Khi nào nên sử dụng CSS background-image

  1. Hình ảnh hoàn toàn được sử dụng để thiết kế.
  2. Không liên quan với nội dung.
  3. Hình ảnh nhỏ mà chúng ta có thể chơi với CSS3.
  4. Lặp lại hình ảnh (Trong biểu tượng tác giả blog, biểu tượng ngày sẽ được lặp lại cho mỗi bài viết, v.v.).

Vì tôi sẽ sử dụng chúng dựa trên những lý do này. Đây là những thực hành tốt về Công cụ Tìm kiếm Tối ưu hóa hình ảnh.


54

Trình duyệt không phải lúc nào cũng được đặt để in ảnh nền theo mặc định; nếu bạn có ý định để mọi người in trang của bạn :)


9
Âm thanh như: PRO - Sử dụng IMG nếu bạn muốn hình ảnh được in theo mặc định. CON - Sử dụng hình nền nếu bạn không muốn hình ảnh được in theo mặc định. Đẹp quá
hệ thống PAUSE

7
Tôi nghĩ ý tưởng là có các kiểu CSS chỉ in riêng biệt để ẩn hình ảnh hoặc thay đổi chúng thành một cái gì đó phù hợp hơn.
Blazemonger

52

Nếu bạn có CSS ​​của mình trong một tệp bên ngoài, thì sẽ rất thuận tiện để hiển thị một hình ảnh được sử dụng thường xuyên trên trang web (chẳng hạn như hình ảnh tiêu đề) làm hình nền, vì sau đó bạn có thể linh hoạt thay đổi hình ảnh sau này.

Ví dụ: giả sử bạn có HTML sau:

<div id="headerImage"></div>

... và CSS:

#headerImage {
    width: 200px;
    height: 100px;
    background: url(Images/headerImage.png) no-repeat;
}

Vài ngày sau, bạn thay đổi vị trí của hình ảnh. Tất cả bạn phải làm là cập nhật CSS:

#headerImage {
    width: 200px;
    height: 100px;
    background: url(../resources/images/headerImage.png) no-repeat;
}

Mặt khác, bạn phải cập nhật srcthuộc tính của <img>thẻ thích hợp trong mọi tệp HTML (giả sử bạn không sử dụng ngôn ngữ kịch bản phía máy chủ hoặc CMS để tự động hóa quy trình).

Ngoài ra hình ảnh nền cũng hữu ích nếu bạn không muốn người dùng có thể lưu hình ảnh (mặc dù tôi chưa bao giờ cần phải làm điều này).


14
Hình nền chắc chắn có thể được lưu với một số cách chơi trò chơi nguồn xem tối thiểu, không dễ dàng như nhấp chuột phải vào hình ảnh.
Michael Hackner

2
Firefox. Nhấp chuột phải. "Xem ảnh nền". Không khó lắm đâu.
TRiG

1
@TRiG Trừ khi có một lớp phủ trong suốt hoặc sửa đổi trình đơn ngữ cảnh cụ thể theo trang để ngăn bạn thực hiện điều đó. Tôi đã thấy điều đó trước đây và theo tôi thì khá là ngớ ngẩn vì bạn thậm chí không cần phải chơi trò chơi trong nguồn, nếu trang đã được tải đầy đủ thì trong Firefox ít nhất bạn có thể nhấp vào Công cụ> Thông tin trang / alt + t, i / nhấp chuột phải và chọn Xem thông tin trang, duyệt đến phần Phương tiện và lưu tất cả các mục bạn muốn từ danh sách. Tất nhiên, có nhiều cách để ngăn chặn điều đó, như nhúng hình ảnh vào tệp Flash hoặc các thủ thuật kỳ lạ khác, nhưng ngay cả những cách đó cũng có thể được bỏ qua hoặc tính toán.
JAB

Tôi nghĩ rằng kỹ thuật nền không hoàn toàn tốt khi người dùng bị từ chối lưu hình ảnh ...
ncubica

45

Về giống như câu trả lời của sanchothefat , nhưng từ một khía cạnh khác. Tôi luôn tự hỏi: nếu tôi loại bỏ hoàn toàn các bảng định kiểu khỏi trang web, các yếu tố còn lại chỉ thuộc về nội dung? Nếu vậy, tôi đã làm tốt công việc của mình.


42

Một số câu trả lời vượt qua kịch bản ở đây. Đây là một tình huống đơn giản chết.

Chỉ cần trả lời câu hỏi này mỗi khi bạn muốn đặt một hình ảnh:

Đây là một phần của nội dung hay một phần của thiết kế?

Nếu bạn không thể trả lời câu hỏi này, có lẽ bạn không biết mình đang làm gì hoặc muốn làm gì!

Ngoài ra, KHÔNG xem xét bên cạnh hai kỹ thuật, chỉ vì bạn muốn "thân thiện với máy in" hay không. Ngoài ra KHÔNG ẩn nội dung khỏi quan điểm SEO với CSS. Nếu bạn thấy mình đang quản lý nội dung của mình trong các tệp CSS, bạn sẽ tự bắn vào chân mình. Đây chỉ là một quyết định tầm thường về nội dung hay không. Mọi khía cạnh khác nên được bỏ qua.


Tôi thích câu trả lời này. Nó rất rõ ràng. Các vấn đề còn lại như thân thiện với máy in hoặc SEO nên được xem xét riêng trong từng kịch bản.
Juan Herrera

28

Tôi sẽ thêm hai đối số khác:

  • Một thẻ img là tốt nếu bạn cần thay đổi kích thước hình ảnh. Ví dụ: nếu hình ảnh gốc là 100px x 100 px và bạn muốn nó là 80px x 80px, bạn có thể đặt chiều rộng và chiều cao CSS của thẻ img. Tôi không biết cách nào tốt để làm điều này bằng cách sử dụng hình nền. EDIT: Điều này bây giờ cũng có thể được thực hiện với hình nền, sử dụng background-sizethuộc tính CSS3.

  • Sử dụng hình nền là tốt khi bạn cần phải tự động chuyển đổi giữa các họa tiết . Ví dụ: nếu bạn có một hình ảnh nút và bạn muốn một hình ảnh riêng biệt được hiển thị khi con trỏ di chuột qua phần tử, bạn có thể sử dụng một hình ảnh nền chứa cả các họa tiết bình thường và di chuột và thay đổi động vị trí nền.


2
Đây là một câu trả lời thực sự tốt, đặc biệt là điểm thay đổi kích thước. Mọi người sẽ tranh luận rằng bạn có thể sử dụng kích thước nền nhưng nếu bạn đang cố gắng hỗ trợ các trình duyệt cũ thì đó không nhất thiết là cách tốt nhất để đi.
dudewad

1
Đây là cách nó được thực hiện trong CSSbackground-size: 80px 80px;
Kareem

2
Cảm ơn bạn @Kareem. Tôi thấy điều này đã được giới thiệu với CSS3, nó chưa tồn tại khi tôi trả lời ban đầu. Tôi đã chỉnh sửa câu trả lời của tôi để phản ánh điều này.
Anders Rabo Thorbeck

Tôi nghĩ điều quan trọng cần lưu ý là thay đổi kích thước ảnh có thể khó khăn về mặt pixel hóa hoặc nội suy. Khi có thể, tôi sẽ không thay đổi kích thước hơn 40% (và đó là độ dài - 20% là tiêu chuẩn) mà không đưa hình ảnh của bạn vào một phần mềm chụp ảnh để thay đổi kích thước một cách chính xác mà không làm giảm chất lượng. Chất lượng DPI có thể quan trọng ở đây nếu không có đủ thông tin để kéo dài và lấp đầy lượng pixel được phân bổ.
dale hạ cánh

18

Thêm một lợi ích nữa từ việc sử dụng thẻ <IMG> có liên quan đến SEO - tức là bạn có thể cung cấp thêm thông tin về hình ảnh trong thuộc tính ALT của thẻ hình ảnh, trong khi không có cách nào để cung cấp thông tin đó khi chỉ định hình ảnh thông qua CSS và trong đó trường hợp chỉ tên tệp hình ảnh có thể được lập chỉ mục bởi các công cụ tìm kiếm. Thuộc tính ALT chắc chắn mang lại lợi thế SEO thẻ <IMG> so với phương pháp CSS. Đó là lý do tại sao theo tôi, tốt hơn là chỉ định hình ảnh bạn muốn xếp hạng tốt trong kết quả tìm kiếm hình ảnh (ví dụ: Tìm kiếm hình ảnh của Google) bằng cách sử dụng thẻ <IMG>.


Giá trị ALT hình ảnh nền có thể được xác định trong sơ đồ trang web. google.com/schemas/sitemap-image/1.1
Kareem

17

Tiền cảnh = img.

Nền = nền CSS.


5
Chắc chắn, nhưng những gì về chỉ báo mũi tên xuống nhỏ bên cạnh nút "menu", hoặc các yếu tố khác như vậy. Làm thế nào để bạn phân loại đó - tiền cảnh hoặc nền?
dudewad

@dudewad Tôi sẽ nói tiền cảnh, bởi vì chúng (trực quan) trong lớp "trên cùng" của trang, được đặt chồng lên các yếu tố khác.
jkdev

14

Chỉ sử dụng hình nền khi cần thiết, ví dụ như các thùng chứa có hình ảnh đó.

Một trong những PROS chính bằng cách sử dụng IMAGES là nó tốt hơn cho SEO .


3
Có lẽ bởi vì bạn có thể sử dụng thuộc tính alt.
David

4
Điều đó không phụ thuộc vào việc bạn có muốn SEO cho hình ảnh cụ thể đó không? Tôi không thấy lý do tại sao bạn lại đi SEO trên một hình ảnh là một phần của kiểu dáng trang chứ không phải nội dung (ví dụ: biểu tượng email trên trang liên hệ của bạn). Vì vậy, thực sự, tôi muốn thay đổi tuyên bố của bạn xung quanh. Chỉ sử dụng HÌNH ẢNH khi cần thiết (có liên quan đến nội dung, liên quan đến in và / hoặc liên quan đến SEO).
Volzy

12

Sử dụng hình nền, bạn cần xác định rõ các kích thước. Đây có thể là một vấn đề quan trọng nếu bạn không thực sự biết trước về chúng hoặc không thể xác định chúng.

Một vấn đề lớn <img />là lớp phủ. Điều gì xảy ra nếu tôi muốn một bóng bên trong CSS trên hình ảnh của tôi ( box-shadow:inset 0 0 5px rgb(0,0,0,.5))? Trong trường hợp này, vì <img />không thể có các phần tử con, bạn cần sử dụng định vị và thêm các phần tử trống tương đương với đánh dấu vô dụng.

Tóm lại, nó khá tình huống.


11

Một vài tình huống khác background-imagenên được sử dụng:

  • Khi bạn muốn hình ảnh thay đổi khi chuột được di chuột lên nó.
  • Khi bạn muốn thêm các góc tròn cho hình ảnh. Nếu bạn sử dụng img, hình ảnh rò rỉ ra khỏi các góc tròn.

Bạn thực sự có thể làm:img { border-radius: 10px; }
Rafff

@RafcioKowalsky bạn đúng. Không thể nhớ chính xác các điều kiện border-radiuskhông hoạt động.
Behrang Saeedzadeh

10

Sử dụng hình nền CSS trong trường hợp có nhiều giao diện hoặc phiên bản thiết kế. Javascript có thể được sử dụng để tự động thay đổi một lớp của một thành phần, điều này sẽ buộc nó phải hiển thị một hình ảnh khác. Với một thẻ IMG, nó có thể khó khăn hơn.


bạn cũng có thể tự động thay đổi thuộc tính src của thẻ hình ảnh, dễ dàng như thay đổi một lớp
roborourke

3
@sanchothefat, tuy nhiên, trong trường hợp này, nguồn hình ảnh sẽ cần phải được giữ trong JS thay vì CSS. Tệp css IMO sẽ phù hợp hơn để giữ tên tệp.
MK_Dev

7

Đây là một xem xét kỹ thuật: hình ảnh sẽ được tạo ra một cách linh hoạt? Việc tạo <img>thẻ trong HTML có xu hướng dễ dàng hơn rất nhiều so với việc cố gắng chỉnh sửa động một thuộc tính CSS.


1
Và những gì về phong cách nội tuyến? Câu hỏi này thực sự không được quyết định bởi ý tưởng này.
viam0Zah

có lẽ tôi nên cụm từ theo cách này: bạn muốn làm việc với một phần tử DOM hoặc một thuộc tính phần tử?
Bryan M.

có lẽ đáng để xem xét bacl trong '09, nhưng với jQuery thì đây không phải là vấn đề. Việc chuyển đổi css hoặc các lớp trên một phần tử thậm chí còn dễ dàng và linh hoạt hơn so với chuyển đổi các phần tử.
dfherr

7

Kích thước của hình ảnh thì sao? Nếu tôi sử dụng thẻ img, trình duyệt sẽ chia tỷ lệ hình ảnh. Nếu tôi sử dụng nền css, trình duyệt chỉ cắt một đoạn từ hình ảnh lớn hơn.


7

Liên quan đến việc tạo hình ảnh động bằng CSS TranslateX / Y (Cách thích hợp để tạo hiệu ứng html) - Nếu bạn thực hiện bản ghi Dòng thời gian Chrome của hình ảnh nền CSS đang hoạt hình so với thẻ IMG đang hoạt hình, bạn sẽ thấy thời gian vẽ ngắn hơn đáng kể cho CSS hinh nên.


7

Có một lý do khác! Nếu bạn có thiết kế đáp ứng và muốn phân chia việc sử dụng hình ảnh độ phân giải thấp, trung bình và độ phân giải cao cho các thiết bị thông qua truy vấn phương tiện, bạn cũng nên sử dụng hình nền.


1
Maarten, terscheling không thể Pipable tôi nghe từ Vincent willems. Vậy bạn nghĩ nó có thể hoạt động như thế nào trên PyMol
Mehdi Nellen

1
Vui lòng tham khảo tài liệu về mức độ dễ uốn của pieterpeitshoeve.nl/rondleiding
Maarten

@Maarteen, tôi đoán bây giờ có thể được thực hiện bằng cách sử dụng thẻ nguồn và hình ảnh html 5
Tick20

6

Ngoài ra, tôi có một phần thư viện có kích thước hình ảnh không nhất quán nên mặc dù những hình ảnh đó rõ ràng được coi là nội dung, tôi sử dụng hình nền và căn giữa chúng trong div với kích thước được đặt. Điều này tương tự như những gì facebook làm trong album của họ ..


6

img là một thẻ html vì một lý do, do đó nó nên được sử dụng. Để tham khảo hoặc để minh họa mọi thứ, mọi người, ví dụ: trong các bài viết.

Ngoài ra nếu hình ảnh có ý nghĩa hoặc phải có thể nhấp được thì img tốt hơn nền css . Đối với tất cả các tình huống khác, tôi nghĩ rằng, một nền css có thể được sử dụng.

Mặc dù, nó là một chủ đề cần được thảo luận nhiều lần.

Sinh viên web đến từ Paris, Pháp


5

Chỉ cần thêm một cái nhỏ, bạn nên sử dụng thẻ img nếu bạn muốn người dùng có thể 'nhấp chuột phải' và 'lưu ảnh' / 'lưu ảnh', vì vậy nếu bạn có ý định cung cấp hình ảnh làm tài nguyên cho khác.

Sử dụng hình nền sẽ (theo như tôi biết trên hầu hết các trình duyệt) sẽ vô hiệu hóa tùy chọn lưu ảnh trực tiếp.


5

Một đầu vào nhỏ, tôi đã gặp vấn đề với hình ảnh phản hồi làm chậm quá trình kết xuất trên iphone trong một phút, ngay cả với hình ảnh nhỏ:

<!-- Was super slow -->
<div class="stuff">
    <img src=".." width="100%" />
</div>

Nhưng khi chuyển sang sử dụng hình nền, vấn đề đã biến mất, điều này chỉ khả thi nếu nhắm mục tiêu các trình duyệt mới hơn.


Bạn có bất kỳ hỗ trợ hoặc giải thích về hành vi này?
Todd

Xin lỗi, tôi không biết tại sao nó lại làm chậm trang để thu thập dữ liệu .. có thể luồng lại trong trình duyệt trên iphone có rất ít tài nguyên.
winthers

4

IMGtải trước vì srcbản thân nó nằm trong tệp html trong khi trong trường hợp background-imagenguồn được đề cập trong biểu định kiểu để hình ảnh tải sau khi biểu định kiểu được tải, làm chậm quá trình tải trang web.


Ngoài ra, một số trình duyệt (ví dụ Firefox 35) dường như làm mới CSS background-imagesau một thời gian: nếu bạn mở một số tab, khi bạn quay lại tab của mình sau một thời gian, nền CSS sẽ trống trong một thời gian.
Skippy le Grand Gourou

3

HTML dành cho nội dung và CSS dành cho thiết kế. Là hình ảnh cần thiết và nó có cần được chọn bởi các trình đọc màn hình không? Nếu câu trả lời là có, thì hãy đặt hình ảnh vào HTML. Nếu nó hoàn toàn là để tạo kiểu, thì bạn có thể sử dụng thuộc tính hình ảnh nền trong CSS để thêm hình ảnh. Giống như nhiều người ở đây đã đề cập, sau đó bạn có thể sử dụng một yếu tố giả trên hình ảnh nếu bạn muốn.


3

Cũng lưu ý rằng hầu hết các trình thu thập công cụ tìm kiếm không lập chỉ mục hình nền CSS, do đó, hình nền sẽ bị bỏ qua và bạn sẽ không thể nhận được bất kỳ lưu lượng truy cập nào từ các công cụ tìm kiếm (nói ngắn gọn là không có lợi ích SEO).

Khi tất cả các hình ảnh được xác định bằng thẻ được lập chỉ mục (trừ khi được loại trừ thủ công) và có thể mang lại lưu lượng truy cập từ các công cụ tìm kiếm nếu thuộc tính tiêu đề / tên và tên tệp của chúng được tối ưu hóa đúng cách (viết một số từ khóa).


2

Bạn có thể sử dụng thẻ IMG nếu bạn muốn hình ảnh ở dạng lỏng và tỷ lệ theo các kích thước màn hình khác nhau. Đối với tôi những hình ảnh này chủ yếu là một phần của nội dung. Đối với hầu hết các yếu tố không phải là một phần của nội dung, tôi sử dụng các họa tiết CSS để giữ kích thước tải xuống tối thiểu trừ khi tôi thực sự muốn làm động các biểu tượng, v.v.


2

Tôi sử dụng hình ảnh thay vì hình nền khi tôi muốn làm cho chúng có thể co giãn 100% được hỗ trợ trong hầu hết các trình duyệt.


2

Nếu bạn muốn chỉ thêm một hình ảnh cho nội dung đặc biệt trên trang hoặc chỉ cho một trang, bạn nên sử dụng thẻ IMG và nếu bạn muốn đặt hình ảnh trên nhiều trang thì bạn nên sử dụng CSS Background Image.


2

Một ảnh nền PRO khác: Ảnh nền cho <ul>/ <ol>danh sách.

Sử dụng hình nền nếu chúng là một phần của thiết kế tổng thể và được lặp lại trên nhiều trang. Tốt nhất là ở dạng sprite nền để tối ưu hóa.

Sử dụng thẻ cho tất cả các hình ảnh không phải là một phần của thiết kế tổng thể và rất có thể được đặt một lần, như hình ảnh cụ thể cho bài viết, con người và hình ảnh quan trọng đáng được thêm vào hình ảnh google.

** Hình ảnh lặp lại duy nhất mà tôi gửi kèm trong <img>thẻ là logo của trang web / công ty. Bởi vì mọi người có xu hướng nhấp vào nó để đi đến trang chủ, do đó bạn bọc nó bằng một <a>thẻ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.