网站首页 > PHP源码 > 文件数据 > 使用CSS的后备图像

使用CSS的后备图像

  • 作者:互联网
  • 时间:2026-01-19 14:22:02
我有一个< img>显示远程图像. 我想让它回退到另一个本地图像,在远程的图像无法访问的情况下.

 .cc_image {    width: 256px;    height: 256px;}.cc_image.fallback {    /* this URL here is theoretically a local one (always reachable) */    background-image: url('https://cdn2.iconfinder.com/data/icons/picons-basic-3/57/basic3-010_creative_commons-256.png');}

它的工作原理是,当找不到src图像时,将显示背景图像.

缺点是:

>它将始终加载背景图像(额外的HTTP请求)>它在原始图像的位置显示了一个小的未找到图标(Safari上的问号),显示在背景图像上方(不是大问题,但我想摆脱它)

我怎么能解决这些问题?或者:是否有其他技术可以达到相同的效果?

我找到了this question,但给定的解决方案依赖于Javascript或< object> (这似乎不适用于Chrome).我想要一个纯CSS / HTML解决方案,如果可能的话没有Javascript.

我知道多个背景图像,但我不确定它是否是一个不错的选择(浏览器支持?它会不会出现无法访问的图像吗?).或者我在考虑将SVG图像嵌入为数据uri.

建议最灵活(和兼容)的方法?

不幸的是,如果没有Javascript或object标签,你就无法实现这两者.

您可以这样做以避免丢失图像图标:

将图像放在容器中(它可能已经放在一个容器中).使容器具有与图像相同的宽度和高度.

>将后备图像设置为容器的背景图像.>将远程图像设置为img标记的背景图像.>加载1×1像素透明png作为图像的src(请参阅代码,了解如何在没有额外HTTP请求的情况下完成此操作).

码:

HTML

CSS

.fallback {    background-image: url(*fallback image here*);    display: inline-block; /*to ensure it wraps correctly around the image, even if it is a a or span tag*/    min-width: specify a minimum width (could be the width of the fallback image) px;     min-height: specify a minimum height (could be the height of the fallback image) px;    background-position: center center; // fallback for older browsers    background-size: cover;    background-repeat: no-repeat;}.cc_image {    min-width: same as container px;    min-height: same as container px;    background-position: center center; // fallback for older browsers    background-size: cover;    background-repeat: no-repeat;}

> min-width和max-width确保背景图像保持可见.> background-position确保图像的中心部分保持可见,并且对于旧版浏览器来说是优雅的降级> background-size调整背景图像的大小以填充元素背景.封面值意味着将调整图像大小以使其完全覆盖元素(图像的某些外边缘可能会被裁剪)> img src标记中的base64数据是透明的1px png.>这将有一个额外的好处,普通用户和一些机器人可能无法保存您的图像(基本的图像保护)>唯一的缺点是,对于后备映像,您仍然需要一个额外的HTTP请求.

上一篇: CSS布局的类型

下一篇: CSS Text不包装?