使用jquery获取元素的-webkit-transform的值

Mat*_*ibl 34 jquery html5 webkit css3

我正在使用新的酷css3方法来操作div,这样做的转换:

$("#thediv").css("-webkit-transform","translate(-770px, 0px)");
Run Code Online (Sandbox Code Playgroud)

后来在脚本中我想要获得变换的值,如下所示:

$("#thediv").css("-webkit-transform");
Run Code Online (Sandbox Code Playgroud)

它返回一个这样的矩阵:matrix(1,0,0,1,-770,0)

我无法弄清楚的是如何得到这个矩阵的第5个值(-770)......

有什么建议?谢谢!

Ble*_*der 45

你的矩阵是一个4x4变换矩阵:

矩阵的东西

-770对应于v x.要提取它,构造一个WebkitCSSMatrix对象:

var style = window.getComputedStyle($('#thediv').get(0));  // Need the DOM object
var matrix = new WebKitCSSMatrix(style.webkitTransform);

console.log(matrix.m41);  // -770
Run Code Online (Sandbox Code Playgroud)

  • 谢谢.为了节省时间,有人在寻找`translateY`,它是`matrix [5]`. (4认同)
  • @ 30secondstosam:这个问题被标记为`webkit`,我的答案显然使用了'WebKitCSSMatrix`,那么问题是什么? (3认同)
  • y是matrix.m42 (2认同)

yck*_*art 28

您可以将字符串拆分为数组并像往常一样获得所需的值.这是一个辅助功能,可以完成拆分.

function matrixToArray(str) {
  return str.match(/\d+/g);
}
Run Code Online (Sandbox Code Playgroud)

更新

要保留小数: rgba(0, 0, 0, 0.5)

和否定: matrix(1, 0, 0, 1, -770, 0)

function matrixToArray(str) {
  return str.split('(')[1].split(')')[0].split(',');
}
Run Code Online (Sandbox Code Playgroud)

UPDATE2

RegExp 基于解决方案,保留十进制和负数:

function matrixToArray(str) {
  return str.match(/(-?[0-9\.]+)/g);
}

matrixToArray('rgba(0, 0, 0, 0.5)'); // => ['0', '0', '0', '0.5']
matrixToArray('matrix(1, 0, 0, 1, -770, 0)'); // => ['1', '0', '0', '1', '-770', '0']
Run Code Online (Sandbox Code Playgroud)