图像占位符

Pra*_*lla 18 html javascript css image

我已经使用背景颜色定义了图像标记,这样如果没有图像,颜色应该显示但仍然是破碎的图像图标显示如何删除它?

我不想通过添加jquery或任何框架使页面笨重,我也不能添加任何类型的div到图像,因为该网站几乎完成.

只用javascript找到答案

function ImgError(source){
source.src = "/images/noimage.gif";
source.onerror = "";
return true;
}

<img src="someimage.png" onerror="ImgError(this);"/>
Run Code Online (Sandbox Code Playgroud)

Hem*_*lia 54

你可以使用以下隐藏:

<img
  src="my.png"
  onerror="this.style.display='none'"
/>
Run Code Online (Sandbox Code Playgroud)

如果未找到图像,则可以显示另一张图像:

<img src="my.png" onerror="this.src = 'image-not-found.png';" />
Run Code Online (Sandbox Code Playgroud)

  • 我建议可见性:隐藏而不是display:none,如果你不希望它影响布局.另外,如果在图像未加载时需要显示背景颜色,请注意我将其包装在div中的观点. (5认同)
  • 很好的解决方案,但**小心**:如果你没有重置错误回调,并且由于某些意外的原因,你的'image-not-found.png'找不到,那么你的app/site将开始抛出一个循环无限错误. (3认同)

Dmi*_*nko 7

1x1空png的解决方案

        function ImgError(source){
            empty1x1png = "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVQI12NgYAAAAAMAASDVlMcAAAAASUVORK5CYII=";
            source.src = "data:image/png;base64," + empty1x1png;
            source.onerror = "";
            return true;
        }

        <img src="someimage.png" onerror="ImgError(this);"/>
Run Code Online (Sandbox Code Playgroud)