javascript - 通过 js 组合 css3 转换

标签 javascript jquery ipad css css-transforms

请问有什么方法可以随着时间的推移组合更多的 CSS3 变换吗? 例如当我设置这个时

$bgWrapper.css({
 '-webkit-transform' : ' scale3d(' + currScale + ', '+ currScale +', 1)'
});

然后过一会儿这个

$bgWrapper.css({
'-webkit-transform' : 'translate3d('+ ((currCoords[0])/currScale) +'px, '+ ((currCoords[1])/currScale) +'px, 0px) '
});

我遇到了一个问题。第一个转换被第二个转换覆盖,但那是我绝对不想发生的事情。 所以我观察到我可以组合这些值,所以我可以暂时存储旧值并执行此操作

var tmpTransform = $bgWrapper.css('-webkit-transform');
$bgWrapper.css({
'-webkit-transform' : ''+ tmpTransform +'translate3d('+ ((currCoords[0])/currScale) +'px, '+ ((currCoords[1])/currScale) +'px, 0px) '
});

但即使那是不正确的,重复调用也有问题..

那么有没有办法通过javascript获取css3 scale的精确值呢?有没有办法通过js获取CSS3翻译的准确值? 目前我只能得到这些值的矩阵,当然我可以解析它,但我希望有更好的解决方案。

最后..我想 -webkit-transform: matrix(...) 在 iPad 上没有硬件加速,所以唯一的方法是 matrix3d?正确组合所有这些转换没有问题..

非常感谢,希望你理解我的问题:)

最佳答案

你需要操纵矩阵才能完成你想做的事情:

   var transform = new  WebKitCSSMatrix(window.getComputedStyle(element).webkitTransform);
   transform = transform.rotateAxisAngle(0,0,0,45)
   element.style.webkitTransform = transform;

的方法manipulating WebkitCSSMatrix 是:

.multiply()
.inverse()
.translate()
.scale()
.rotate()
.rotateAxisAngle()
.skewX()
.skewY()

您可以在这里观看演示:

http://jsfiddle.net/6jGaA/

关于javascript - 通过 js 组合 css3 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7777489/

相关文章:

javascript - 哪个谷歌地图 API 用于在区域选择上呈现此鼠标

javascript - $(document.width).bind(onchange,...)?

ios - 为什么我的 iOS 设备检测不到我的声音?

javascript - Chrome 扩展程序 : How to respond to the action from "popup" in the content script?

javascript - Null 究竟是什么?

php - Laravel 5.2 无法将跨域 jQuery 方法识别为 AJAX

javascript - 延迟 FancyBox 打开 *WITH* "don' t 再次显示此内容”链接

iphone - 如何将按钮操作连接到 Tabbar Viewcontrollers

javascript - 使用多层时,KineticJS/Canvas 会使 ipad 上的 safari 崩溃吗?

javascript - 隐藏影响其定位的其他元素后,如何为元素移动设置动画