我有这个可怕的冗长代码,在鼠标移动时运行:
if (distance < 215) {
moveSmile(1)
}
if (distance < 200) {
moveSmile(2)
}
if (distance < 185) {
moveSmile(3)
}
if (distance < 170) {
moveSmile(4)
}
if (distance < 155) {
moveSmile(5)
}
if (distance < 140) {
moveSmile(6)
}
Run Code Online (Sandbox Code Playgroud)
它所调用的功能:
function moveSmile (frameNum) {
mouthX = startMouthPos + mouthFrameWidth * frameNum
$('#mouth').css('background-position', -mouthX + 'px -359px')
}
Run Code Online (Sandbox Code Playgroud)
我以15px的间隔移动div的背景位置,越接近目标div.有没有办法让它更短,更有效?
只是一个快速的公式应该做的伎俩:
moveSmile(Math.ceil((215 - distance) / 15);
Run Code Online (Sandbox Code Playgroud)
(230 - 215) / 15 == 1
(230 - 200) / 15 == 2
...
(230 - 140) / 15 == 6
Run Code Online (Sandbox Code Playgroud)
现在,Math.ceil用于将未整齐分隔的步骤中的值舍15入到相应的值.
moveSmile(Math.ceil((215 - distance) / 15));
Run Code Online (Sandbox Code Playgroud)