你需要知道的 CSS 技巧:图片篇2 你的图片裂开了怎么办?

简介: 你需要知道的 CSS 技巧:图片篇2 你的图片裂开了怎么办?

相信每个人都碰到过这种情况:

image.png

如果自己辛苦开发的产品,在线上遇到图片丢失等问题,导致图片裂开,会不会很难过?


使用占位图片


为了弥补图片加载失败时的用户体验,我们要使用占位图片。

也就是当想要加载的图片加载失败时,去加载其他图片。

就像这样:

image.png

虽然同样是没图片,但在视觉上给人的感受却比图像裂开要好得多。

实现这个需求很简单,img 元素有一个 onerror 事件,图像加载失败时,会触发这个事件。


<img src="/image.png" onerror="callback()" />

我们只需要在 callback 中重新设置它的 src 属性就可以了。


function callback() {
  this.src = '/placeholder.png'
}


处理加载占位图片死循环问题


很多讲解如何处理图片丢失的文章,基本上到这里就结束了。

但我想说的是,这种做法存在隐患。

如果替补图片,也就是 placeholder.png 同时也丢失了,那么它会继续触发 onerror 事件。会出现死循环,最终爆栈,页面崩溃。

所以还需要把 onerror 这个事件清除。


function callback() {
  this.src = '/placeholder.png'
  this.onerror = null
}


使用 Data URL


优化还没结束。

这时图片还是裂开的状态。

image.png

有什么办法可以保证占位图片始终都能被加载出来呢?

当然有办法!

使用 Data URL 协议。

Data URL 协议不同于 HTTP 协议那样可能会出现 404 之类的问题,它是用 base 64 对文件内容进行编码。访问 Data URL,就一定可以获取到内容。

然后我们只需要将 Data URL 作为占位图片就大功告成了!

下面是一个图片转 Data URL 的工具:

tool.chinaz.com/tools/imgto…

不过你可能还存在疑惑,Data URL 的体积并不小,放在 HTML 中会不会影响性能?

确实会,但也要分场景。在这个场景中问题并不大。

这就要对我们的占位图有一定要求了,我们可以使用纯色的矢量图来减少图片体积。

下面是一个可以直接生成纯色占位图片 Data URL 的工具:

placeholderimage.dev/

其实我们也可以期待 W3C 未来会给 img 标签提供一个 placeholder 属性,来专门处理这类问题。



相关文章
|
5月前
|
前端开发 UED 容器
CSS基础-背景属性:颜色、图片、重复
【6月更文挑战第9天】本文介绍了CSS背景属性,包括背景颜色、图片、重复的使用和常见问题。通过实例展示了如何设置背景颜色(如使用rgba()注意透明度影响)、背景图片(使用background-size控制缩放)、背景重复(避免默认平铺导致混乱)以及综合使用背景属性创建复杂效果。理解并熟练运用这些属性能提升网页设计的视觉层次和用户体验。建议通过实践不断探索和提升CSS技能。
64 4
|
6月前
|
前端开发 计算机视觉 开发者
利用CSS改变图片颜色的100种方法!
利用CSS改变图片颜色的100种方法!
133 1
|
25天前
|
前端开发 UED
Webpack 中处理 CSS 和图片资源的多 Loader 配置
【10月更文挑战第12天】 处理 CSS 和图片资源是 Webpack 配置中的重要部分。通过合理选择和配置多个 Loader,可以实现对这些资源的精细处理和优化,提升项目的性能和用户体验。在实际应用中,需要不断探索和实践,根据项目的具体情况进行灵活调整和优化,以达到最佳的处理效果。通过对 Webpack 中多 Loader 处理 CSS 和图片资源的深入了解和掌握,你将能够更好地应对各种复杂的资源处理需求,为项目的成功构建和运行提供坚实的基础。
51 1
|
3月前
|
前端开发
如何使用 CSS object-fit 进行图片的缩放和裁剪
如何使用 CSS object-fit 进行图片的缩放和裁剪
83 0
如何使用 CSS object-fit 进行图片的缩放和裁剪
|
3月前
|
前端开发
视觉冲击:CSS实现相册图片的放大效果,让网站首页更震撼!
视觉冲击:CSS实现相册图片的放大效果,让网站首页更震撼!
|
4月前
|
前端开发 容器
CSS【详解】对齐 (含文本垂直对齐,文本水平对齐、单行文本垂直居中、多行文本垂直居中、6 种方案块级元素水平垂直居中 、7 种方案图片水平垂直居中、文本自适应对齐、图标和文本对齐,图片和文本对齐等)
CSS【详解】对齐 (含文本垂直对齐,文本水平对齐、单行文本垂直居中、多行文本垂直居中、6 种方案块级元素水平垂直居中 、7 种方案图片水平垂直居中、文本自适应对齐、图标和文本对齐,图片和文本对齐等)
67 0
|
4月前
|
前端开发 C++
css 鼠标悬浮显示放大图片 vs 鼠标点击显示放大图片
css 鼠标悬浮显示放大图片 vs 鼠标点击显示放大图片
48 0
|
4月前
|
前端开发 UED
前端 CSS 经典:在 Vue3 中使用渐进式图片
前端 CSS 经典:在 Vue3 中使用渐进式图片
109 0
|
4月前
|
前端开发
前端 CSS 经典:图片边框
前端 CSS 经典:图片边框
35 0
|
4月前
|
前端开发 容器
css 【详解】—— 图片底部留有间隙(含解决方案)
css 【详解】—— 图片底部留有间隙(含解决方案)
124 0