更好的处理加载失败的图片
TL;DR:核心思路就是通过 onerror 得知图片加载失败,并且用伪元素来修饰一下失败场景
传统图片加载失败
优化
- onerror 之后添加 class
 - 对应 class 的伪元素:
- before 添加兜底展示样式
 - after 添加文案
 
 - 当然也可以通过这个方法,为图片加载的时候添加兜底样式?
 
<img src="xxx.png" alt="图片" onerror="this.classList.add('img--error');" />img.img--error {
  display: inline-block;
  transform: scale(1);
}
img.img--error::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  background: #f5f5f5 url(break.svg) no-repeat center / 50% 50%;
  color: transparent;
}
img.img--error::after {
  content: attr(alt);
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  line-height: 2;
  background-color: rgba(0, 0, 0, 0.5);
  color: white;
  font-size: 12px;
  text-align: center;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}