一种动画效果的实现方式
bilibili上有个小小的动画,很有趣,效果是这样的:当你把鼠标移动到一个横着的手机图案上时,这个手机图案就会立起来,动画很呆萌。我对它的实现比较好奇,于是看了一下网页代码,发现实现起来挺简单的;原来这个地方使用了一条很长的图作为背景图,原理就是通过多次修改这个图案的style.backgroundPositionX
属性,让这个图『动起来』。
我稍微的实现了一下,能看个效果
<html>
<head>
<title>动画实现的一种方式</title>
</head>
<body>
<i id = "smallTV" style="display: block; background-image: url('http://static.hdslb.com/images/base/anim-app.png'); width: 80px; height: 80px; background-position: 0px 0px; position:absolute ;cursor:pointer" onmouseover="star()" onmouseout="stop()"></i>
<script>
var tv = document.getElementById("smallTV");
var theWidth = 0;
var changeStar, changeStop; //用于存放 setInterval() 方法
function start() {
clearInterval(changeStop);//一旦鼠标移入,就停止鼠标移出时的动画
changeStar = setInterval(changeTheWidthStar,100);
theWidth=0;
}
function stop() {
clearInterval(changeStart); //一旦鼠标移开,就停止鼠标进入时的动画
changeStop = setInterval(changeTheWidthStop,100);
}
function changeTheWidthStart(){
theWidth -= 80; //这个数字是根据那个长长的图片来确定的。
tv.style.backgroundPositionX = theWidth + "px";
while(theWidth <= -1280) {
theWidth = -800;
theWidth -= 80;
tv.style.backgroundPositionX = theWidth + "px";
}
}
function changeTheWidthStop(){
if(theWidth< 0){
theWidth += 80;
tv.style.backgroundPositionX = theWidth + "px";
} else {
clearInterval(changeStop);
}
}
</script>
</body>
</html>
所有的代码都在文章中写出来了,github的地址点此。
Comments