js(jquery)加载图片(GIF)闪烁的问题

js(jquery)加载图片(GIF)闪烁的问题

使用new Image()进行图片预加载,代码如下:

function setImage(img,$el,method){
    if(method == "div"){
        $el.css("background-image","url(" + img.src +")");
    }else if(method == "img"){
        $el.css({
            "content": "url("+img.src+")"
        })
    }
}
function loadImage(url,$el,method,callback) {
    var img = new Image(); //创建一个Image对象,实现图片的预下载
    img.onload = function(){
        img.onload = null;
        callback(img,$el,method);
    };
    img.src = url;
}

使用方法:

  1. 如果是使用div背景图片时,调用方式:
let url = "";
let $el = $("选择器");
loadImage(url + "?" + new Date().getTime(),$el,"div",setImage);
  1. 如果是使用img标签时,调用方式:
let url = "";
let $el = $("选择器");
loadImage(url + "?" + new Date().getTime(),$el,"img",setImage);

加载GIF动态图时,会出现重复的问题,可以计算出动态图结束时间,用一张最后的静态图替换

//动态图路径
let url1 = "";
//一次动画用时
let timer = "";
//静态图路径
let url2 = "";
let $el = $("选择器");
loadImage(url1 + "?" + new Date().getTime(),$el,"div",setImage);
setTimeout(()=>{
    loadImage(url2 + "?" + new Date().getTime(),$el,"div",setImage);
},timer);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

£漫步 云端彡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值