所以这是我的动画功能:
function animation(el, isHorizontal, from, to, callback) {
var start = true === isHorizontal ? from.x : from.y,
stop = true === isHorizontal ? to.x : to.y,
intervalId, diff;
intervalId = setInterval(function () {
diff = Math.abs(stop - start);
if (stop < start) {
if (diff < 4) {
start -= diff;
} else {
start -= 4;
}
} else {
if (diff < 4) {
start += diff;
} else {
start += 4;
}
}
if (true === isHorizontal) {
el.style.left = start + 'px';
} else {
el.style.top = start + 'px';
}
if (start === stop) {
clearInterval(intervalId);
callback();
}
}, 1);
}
它在 Chrome 中完美运行,尽管在 Safari 中,动画元素似乎在它们应该停止之前停止了几个像素。
假设我要从左侧移动:8 到左侧:116。在 Safari 中,元素在左侧结束:108,当我打开检查器查看控制台并检查元素上的左侧偏移是否正确时,元素正确地重新定位。
我需要做的就是打开开发者控制台,然后元素跳转到正确的位置。
这么奇怪。
这是我的一些可能相关的 CSS:
.box {
position: relative;
}
.item {
position: absolute;
background-position: left top;
background-repeat: no-repeat;
background-size: 100% auto;
-webkit-transform: transform;
}