我有两个图像的精灵,一个位置是 0 0,另一个是 0 -150 px。我想让它们每 10 秒更改一次。我对 JavaScript 有点熟悉,到目前为止,我有这个:
function changeBackground () {
// some for loop? //
}
setInterval(function(){changeBackground()},10000);
对不起,这真的只是几行,但我真的迷路了。一点提示将不胜感激。
我有两个图像的精灵,一个位置是 0 0,另一个是 0 -150 px。我想让它们每 10 秒更改一次。我对 JavaScript 有点熟悉,到目前为止,我有这个:
function changeBackground () {
// some for loop? //
}
setInterval(function(){changeBackground()},10000);
对不起,这真的只是几行,但我真的迷路了。一点提示将不胜感激。
这就是我的意思...
要支持其他浏览器,您需要添加其他前缀。(这适用于 chrome 和 safari)
不需要javascript .. .尤其是没有计时器。
在本例中,您的图像是“sprite.png”宽度 300px 高度 150px
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
div{
width:150px;height:150px;
background:url(sprite.png) no-repeat 0px 0px;
-webkit-animation:mymove 10s infinite;
}
@-webkit-keyframes mymove{
0%{background-position:0px 0px;}
50%{background-position:0px 0px;}
51%{background-position:-150px 0px;}
100%{background-position:-150px 0px;}
}
</style>
</head>
<body>
<div></div>
</body>
</html>
不使用 javascript 计时器的另一种方法......是在转换结束时更改类。
所以每次转换有 2 节课持续 10 秒。最后它会交换班级。
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style>
div{
width:150px;height:150px;
background:url(sprite.png) no-repeat 0px 0px;
-webkit-transition:background-position 0s linear 10s;
}
div.odd{
background-position:-150px 0px;
}
</style>
</head>
<script>
window.onload=function(){
var div=document.getElementsByTagName('div')[0];
div.addEventListener('transitionend',function(){
this.classList.toggle('odd');
},false);
div.classList.toggle('odd');// start the transition
}
</script>
<body>
<div></div>
</body>
</html>
像这样的东西。这是未经测试的,所以可能会有一些错误,但你可以像这样解决它:
<div id="sprite"></div>
setBackgroundImage(frameNumber) {
var style = document.getElementById('sprite').style;
var pos;
if (frameNumber === 0) {
pos = 0;
} else if (frameNumber === 1) {
pos = -150;
}
style.backgroundPositionX = pos;
}
var currentFrame = 0;
function changeBackground () {
currentFrame ++;
currentFrame = currentFrame % 2;
setBackgroundImage
}
setInterval(function(){changeBackground()},10000);
如果您需要动画,也许这对您有帮助,请评论http://jsfiddle.net/hmZ7W/
var button = document.getElementById("button");
var oddEven = 1;
function changeBackground () {
if(oddEven)
{
button.style.backgroundPosition = "0 150px";
oddEven = 0;
}
else
{
button.style.backgroundPosition = "0 0";
oddEven = 1;
}
}
setInterval(function(){changeBackground()},500);
您可以在 JS 中尝试使用此代码制作动画:
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<style type="text/css">
#sprite {
width: 100px;
height: 100px;
background: url(image.jpg) 0 0;
}
</style>
</head>
<body onload="main();">
<script>
var pos = [-10, -20, -30]; // image offset
var posIdx = 0; // offset index
function main() {
var img = document.createElement('img')
img.id = 'sprite';
document.body.appendChild(img);
setInterval(function() {
anim(img);
}, 1000);
}
function anim(el) {
posIdx++;
if (posIdx > pos.length - 1) posIdx = 0;
el.style.backgroundPositionX = pos[posIdx] + 'px';
}
</script>
</body>