我有一张1320x1320 spritesheet,每张图片分别为120x120,121张图像。到目前为止,我一直在使用这个公式设置背景位置:
image[i].style.backgroundPosition = -120*i + "px " + -Math.floor(i/11)*120 + "px"
现在我已接近完成我的项目,我想更新一些快速修复,以便我不使用121 Math.floor来加载所有图像,因此更容易更新它们在将来添加新的时,无需重新排列精灵表中的所有图像按字母顺序排列。所以我去了一个程序来为我的所有图像生成当前的css位置,例如:
.image[1]{-600px -480px;}
.image[2]{-1200px -840px;}
.image[3]{-1200px -720px;}
.image[4]{-1200px -600px;}
但问题是,如果我改变背景大小,它会完全破坏所有图像的位置。有一个实例,我一次加载所有图像,所以用户可以选择其中一个,但一次显示121个图像我需要缩小它一点,所以我从120x120到72x72的背景大小,但定位会被新方法破坏,有没有人可以解决这个问题?
我见过的所有背景大小+背景位置问题线程都是关于百分比和与我所拥有的完全不同的东西。
答案 0 :(得分:0)
如果您只想缩小元素,可以随时使用css3
transform: scale(.5)
及其webkit / firefox同行。
关于Math.floor()的第一点,我真的没有看到问题。只需将初始化放在一个循环中就可以了。
如果你真的想要使用i%11而不是地板。
希望能回答你的问题。