我正在查看swipe.js的源代码,这是一个跨浏览器库,用于在支持触摸的设备上创建动画幻灯片。
为了创建动画,swipe.js 使用 CSS3 转换(如果必须的话,可以使用 Javascript 动画。)所以,他们用来进行实际 CSS3 转换的 translate 函数是:
function translate(index, dist, speed) {
var slide = slides[index];
var style = slide && slide.style;
if (!style) return;
style.webkitTransitionDuration =
style.MozTransitionDuration =
style.msTransitionDuration =
style.OTransitionDuration =
style.transitionDuration = speed + 'ms';
style.webkitTransform = 'translate(' + dist + 'px,0)' + 'translateZ(0)';
style.msTransform =
style.MozTransform =
style.OTransform = 'translateX(' + dist + 'px)';
}
所以,基本上为了制作这个跨浏览器,他们必须为 Webkit、Mozilla、Microsoft 和 Opera 设置不同的转换属性。我不明白为什么他们对 webkit 使用该函数(它需要两个参数),而对其他所有东西 translate
使用单参数函数。translateX
据我从Mozilla和Microsoft文档中可以看出,这两个引擎都translate
支持translateX
. swipe.js 的作者决定在translateX
这里用于非 webkit 浏览器是否有某种原因?实际上是否有一些浏览器支持translateX
但不支持translate
?