这是我用来通过css动画对象的精灵。每帧的宽度为224px,因此div的background-position属性每帧增加-224px,循环继续。问题是我的div的宽度不固定。我使用div的百分比宽度来保持分辨率无关。所以我希望我的224px宽帧在div的宽度上缩放,并且每帧向左移动相同的量。希望你清楚。这是用于动画div的JS函数。
function moveTail() {
if ( typeof moveTail.counter == 'undefined' ) {
moveTail.counter = 0;
moveTail.object = $('#genietail');
}
if( moveTail.counter == 42 )
moveTail.counter = -1;
++moveTail.counter;
moveTail.object.css('background-position', moveTail.counter*-224 + "px 0px" );
}
答案 0 :(得分:1)
有两种缩放精灵图像的方法。
第一个是使用background-size
CSS属性。如果你的精灵大小是例如100px乘100px,默认情况下background-size
将取值100px 100px
,但如果你将它设置为200px 200px
,它将使显示的图像大小加倍。
在你的情况下,它看起来像这样:
var spriteSize = { height: 224, width : 224 * 20 };
var imageSize = { height: 224, width : 224 };
var backgroundWidth = Math.floor((moveTail.object.width() / imageSize.width) * spriteSize.width);
var backgroundHeight = moveTail.object.height();
moveTail.object.css("background-size", backgroundWidth + "px " + backgroundHeight + "px");
moveTail.object.css('background-position', moveTail.counter * -moveTail.object.width() + "px 0px" );
第二个是将CSS 3属性transform
与scaleX
和scaleY
一起使用。如果你想让一个div加倍显示你可以在CSS transform: scaleX(2) scaleY(2)
中显示的大小。