HTML:
<div class="logo">
<a href="javascript:;">
</a>
</div>
CSS:
.logo a{
display: block;
width: 190px;
height: 120px;
background-image: url(../img/header/sprite.png);
position: absolute;
top: 10px;
}
.logo .to-gif{
background-image: url(../img/gif/1.gif);
background-size: 114px 96px;
background-position: center;
background-repeat: no-repeat;
}
首先遇到的问题是,gif图片只循环一次,而我尝试了几种清除缓存的方式都失败了,最后选择让gif图片无限循环。
参考博客:https://www.jianshu.com/p/6e9e4a95850f
然后又遇到一个问题:用鼠标快速hover图片时,由于setTimeout定时器的不断叠加,不到5s就会一直闪,修改JS代码如下:
//刷新gif图片
let logo = document.getElementsByClassName("logo")[0].getElementsByTagName("a")[0];
let check = false; //只有执行完上一个定时器,切换回静态图,再hover才有效
logo.onmouseover = function(){
if(check == false){
logo.className = "to-gif";
check = true;
timer3 = setTimeout(() => {
logo.className = "";
check = false;
}, 5200);
}
}
暂时没有加过渡效果和文字,目前我觉得做到这样已经可了(