css animation背景图切换在iOS下的bug

10 篇文章 0 订阅

animation切换背景图在iOS的休眠转态重新唤醒时造成背景图为空

1. 首先遇到的问题

有个项目需要用css animation 来切换背景图,简单来说就是这样:

@keyframes toggle-bg{
	from{
		 background-image: url(img/bg1.png);
	}
	to{
		 background-image: url(img/bg2.png);
	}
}

正常情况下就是两张背景图在不断的切换,但是在iOS中只要此页面休眠(界面跳出去重新跳回来不刷新页面或者屏幕休眠)后重新唤醒时页面的背景图全部消失。但是在安卓机中完全没有这样的现象。

2.解决方法

此问题的解决方法其实很简单,不能用css的animation那咱就直接用js定时器改变背景图来搞定它,但是我不太喜欢直接在js中改变背景图,所以我通过切换类名方法改变背景图,具体如下:

/*css*/
.lottery{
        background-image: url(../../img/market/dragon/bg1.png);
}
.lottery.light{
	background-image: url(../../img/market/dragon/bg2.png);
}
/*js*/
setInterval(function(){
    $('.lottery').toggleClass('light');
 },500)

然鹅你以为这样就结束了??你错了。。。。
如果你的页面内容很少加载很快,那么恭喜你,你的工作已经结束了,但是真正的项目中内容稍多,所以加载稍慢,于是会出现下面的情况:

原因是bg2还没有加载到就执行了定时器

3.解决图片没加载就执行定时器问题

这个就更简单了,用$(function(){})只是页面加载完毕,外链的内容不一定全部加载完毕。所以需要用到img.οnlοad=function(){} 代码如下:

var img=new Image();
img.src='xxxxxx.png'
img.onload=function(){
    setInterval(function(){
        $('.lottery').toggleClass('light');
    },500)
}

之前用了window.onload方法去实现此功能,电脑端完好但是手机端还是会存在图片没有加载到的问题,因此放弃了window.onload方法。不过注意一个细节,window.onload方法在页面中只能用一次,所以千万不要写多个window.onload方法。$(function(){})没有要求,可以写多个都不影响。
至此,完美的解决了。

]

我的个人博客,有空来坐坐

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值