有没有办法在 HTML <img>
标签中呈现默认图像,以防 src
属性无效(仅使用 HTML)?如果没有,您的轻量级解决方法是什么?
原文由 Ahmed 发布,翻译遵循 CC BY-SA 4.0 许可协议
有没有办法在 HTML <img>
标签中呈现默认图像,以防 src
属性无效(仅使用 HTML)?如果没有,您的轻量级解决方法是什么?
原文由 Ahmed 发布,翻译遵循 CC BY-SA 4.0 许可协议
这对我很有效。也许您想使用 JQuery 来挂钩事件。
<img src="foo.jpg" onerror="if (this.src != 'error.jpg') this.src = 'error.jpg';" alt="add alternative text here">
更新了 jacquargs error guard
更新:仅 CSS 解决方案 我最近看到 Vitaly Friedman 演示了一个我不知道的很棒的 CSS 解决方案。这个想法是将 content
属性应用于损坏的图像。通常 :after
或 :before
不适用于图像,但当它们损坏时,它们会被应用。
<img src="nothere.jpg" alt="add alternative text here">
<style>
img:before {
content: ' ';
display: block;
position: absolute;
height: 50px;
width: 50px;
background-image: url(ishere.jpg);
}
</style>
演示: https ://jsfiddle.net/uz2gmh2k/2/
正如小提琴所示,损坏的图像本身并没有被删除,但是对于大多数没有任何 JS 或 CSS gob 的情况,这可能会解决问题。如果你需要在不同的位置应用不同的图像,只需用一个类来区分: .my-special-case img:before { ...
原文由 Svend 发布,翻译遵循 CC BY-SA 4.0 许可协议
3 回答2.1k 阅读
2 回答1k 阅读✓ 已解决
4 回答977 阅读
2.6k 阅读
2 回答890 阅读
1 回答1.4k 阅读
2 回答507 阅读
您要求 仅提供 HTML 解决方案…
由于第一张图片不存在,将显示后备(本网站上使用的精灵*)。如果您使用的是不支持
object
的 非常 旧的浏览器,它将忽略该标签并使用img
标签。有关兼容性,请参见 caniuse 网站。从 IE6+ 开始,所有浏览器都广泛支持此元素。\* 除非图像的 URL (再次)更改,在这种情况下您可能会看到 alt 文本。