获取div的translate3d值?
假设div已应用于此:
-webkit-transform: translate3d(0px, -200px, 0px)
我怎么能用jQuery检索这些值?
该值存储为matrix
或matrix3d
,具体取决于是否设置了z值。 假设没有其他变换,对于2D矩阵,X和Y是最后两个值。 对于3D矩阵,X,Y,Z,1是最后四位数。
您可以使用正则表达式来获取值:
function getTransform(el) { var results = $(el).css('-webkit-transform').match(/matrix(?:(3d)\(\d+(?:, \d+)*(?:, (\d+))(?:, (\d+))(?:, (\d+)), \d+\)|\(\d+(?:, \d+)*(?:, (\d+))(?:, (\d+))\))/) if(!results) return [0, 0, 0]; if(results[1] == '3d') return results.slice(2,5); results.push(0); return results.slice(5, 8); }
如果您将接受的答案的匹配()模式更改为此,则会添加对负数的支持:
$(el).css('-webkit-transform').match(/matrix(?:(3d)\(-{0,1}\d+(?:, -{0,1}\d+)*(?:, (-{0,1}\d+))(?:, (-{0,1}\d+))(?:, (-{0,1}\d+)), -{0,1}\d+\)|\(-{0,1}\d+(?:, -{0,1}\d+)*(?:, (-{0,1}\d+))(?:, (-{0,1}\d+))\))/)
如果将正则表达式更新为以下内容,则会在变换具有浮点数时添加对奇数情况的支持:
/matrix(?:(3d)\(-{0,1}\d+\.?\d*(?:, -{0,1}\d+\.?\d*)*(?:, (-{0,1}\d+\.?\d*))(?:, (-{0,1}\d+\.?\d*))(?:, (-{0,1}\d+\.?\d*)), -{0,1}\d+\.?\d*\)|\(-{0,1}\d+\.?\d*(?:, -{0,1}\d+\.?\d*)*(?:, (-{0,1}\d+\.?\d*))(?:, (-{0,1}\d+\.?\d*))\))/
编辑:这是错的,忽略这一点。
我想如果你做的事……
var styles = $('.myclass').css('-webkit-transform');
你可能会得到translate3d(0px, -200px, 0px)
。
也许你可以解析那个字符串? 虽然看起来有点像黑客。