加载图片时显示默认图片和默认文字

今天要实现一个功能,移动端上拉加载时,图片未加载出来时显示默认图片和默认文字…
将实现思路做一个分享

1.显示默认背景图

这个就真的超简单了,直接给图片设置一个背景色或者背景图就完事了,感觉都不用什么js,反正我这么做实现效果了。图片展示出来会自动覆盖住背景的

<div class="content-img">
  <img
    class="image_bg"
    :src="item.url" />
</div>
.image_bg {
   background: rgba(0, 0, 0, .1) url('../../../assets/images/default_img.png') no-repeat center;
}

2. 显示默认背景图加文字

还有这种就是既要显示默认背景图,背景图上面还要写个加载中…(虽然感觉几乎用不到),但还是顺便做出来吧

我的思路是,背景图或者背景色还是用上面第一种方式,就使用图片的背景色和背景图,文字使用<p>,监听图片的加载,加载成功后隐藏<p>,加载失败的时候,把<p>里面的文字改成 “加载失败”

页面结构如下,

<div class="content-img">
  <img
    class="image_bg"
    :src="item.url"
    @load="$loadSuccess"
    @error="$loadError" />
      <p class="image_bg_text">加载中...</p>
</div>

main.js

Vue.prototype.$loadSuccess= function(event) {
  if (event.target.complete == true) {
      event.target.classList.remove("image_bg");
      let tipTextNode = event.target.nextSibling;
      if(tipTextNode.classList.contains('image_bg_text')){
        tipTextNode.style.display = "none";
      }
  }
};
Vue.prototype.$loadError= function(event) {
  event.target.classList.add("image_bg");
  let tipTextNode = event.target.nextSibling;
  if(tipTextNode.classList.contains('image_bg_text')){
    tipTextNode.style.display = "none";
    tipTextNode.innerText = '加载失败'
  }
};
.content-img {
  height: 60px;
  width: 80px;
  position: relative;
}

.content-img img {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  border-radius: 2px;
  object-fit: cover;
}

.content-img .image_bg {
  background: rgba(0, 0, 0, .1) url('../../../assets/images/default_img.png') no-repeat center;
}

.image_bg_text {
  position: absolute;
  color: #FFF;
  font-size: 12px;
  width: 100%;
  height: 100%;
  line-height: 60px;
  text-align: center;
}
          
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值