2012-05-27 38 views
6

Có thể hiển thị hình ảnh thay thế nếu không tìm thấy tệp nguồn gốc không? Tôi muốn đạt được điều này chỉ với css và html, không có javascript (hoặc jQuery và như nhau). Ý tưởng là vẫn hiển thị hình ảnh thay vì thử nghiệm "alt" hoặc dấu chéo (mặc định) xấu của IE. Nếu không thể không có javascript, tôi sẽ kiểm tra img src bằng php với cơ bản nếu-thì-else.Hiển thị hình ảnh thay thế

Trả lời

5

Bạn có thể làm điều này bằng cách sử dụng CSS tài sản background-image của phần tử img, tức là

img 
{ 
background-image:url('default.png'); 
} 

Tuy nhiên, bạn phải từ bỏ một chiều rộng hoặc chiều cao để làm việc này (khi img-src không phải là tìm thấy):

img 
{ 
background-image:url('default.png'); 
width:400px; 
} 
+0

Sản phẩm có hoạt động khi bạn thử nghiệm không? Trên Firefox của tôi, nền không được hiển thị khi hình ảnh thực sự bị thiếu. Trên IE của tôi, nền được hiển thị, nhưng văn bản thay thế hoặc chữ “×” màu đỏ trong một hộp. –

+0

Tôi đã chọn aswer nhưng tôi vẫn còn một câu hỏi: bạn có ý gì với "bạn phải cung cấp cho một chiều rộng hoặc chiều cao cho điều này để làm việc (khi img-src không được tìm thấy)"? Nếu thẻ img của tôi đã có chiều rộng và chiều cao sẽ được sử dụng bởi hình nền? – rodedo

+0

Vâng, tôi nghĩ điều đó sẽ hiệu quả. – emrea

6
<object data="foobar.png" width=200 height=200> 
    <img src="test.png" alt="Just testing."> 
</object> 

đây foobar.png là hình ảnh chính, test.png là hình ảnh dự phòng. Theo ngữ nghĩa của phần tử object, nội dung của phần tử (ở đây là phần tử img) phải được hiển thị nếu và chỉ khi dữ liệu chính (được chỉ định bởi thuộc tính data) không thể được sử dụng.

Mặc dù các trình duyệt có lỗi khủng khiếp khi triển khai object trong năm qua, kỹ thuật đơn giản này dường như hoạt động trên các phiên bản hiện đại của IE, Firefox, Chrome.

+1

Trường hợp kiểm tra: http://jsfiddle.net/VkrJ4/1/ OK trong * W7Pro x64 * với Fx 12.0, IE9, Saf 5.1.5 và Op 11.64. Chưa được thử nghiệm với Chrome/Chromium. Không được thử nghiệm với trình đọc màn hình và các AT khác hiện tại (câu hỏi là: "NVDA, JAWS, VoiceOver, ORCA, v.v. đọc văn bản @alt cho người dùng của họ?") – FelipeAls

3

Rất đơn giản và cách tốt nhất để đạt được điều này với mã ít

<img class="avatar" src="img/one.jpg" alt="Not Found" onerror=this.src="img/undefined.jpg"> 

Đối với tôi các công trình trên hoàn hảo!

+0

Đoạn trích thực sự hữu ích giải quyết vấn đề một cách thanh lịch. Tuy nhiên, OP yêu cầu một cách rõ ràng * "để đạt được điều này chỉ với css và html, không có javascript" * – domsson

+0

Ngoài ra, không nên là 'onerror =" this.src = 'img/undefined.jpg'; "'? Ngoài ra, hãy xem câu hỏi này cho một vòng lặp vô hạn có thể và cách ngăn chặn nó: http://stackoverflow.com/questions/8124866/how-does-one-use-the-onerror-attribute-of-an-img-element – domsson

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