我试图根据pos被指定的'x'或'y'来创建一个函数,返回元素的x或y转换位置,如下所示
function getTranslate(el, pos) {
var translate = '',
position = 0;
if(el.css('transform')) {
translate = el.css('transform');
}
else if(el.css('-webkit-transform')) {
translate = el.css('-webkit-transform');
} else {
translate = 'translate3d(0, 0, 0)';
}
if(pos == 'x') {
position = /* Get x position here */ ;
}
else if(pos == 'y') {
position = /* Get y position here */ ;
}
}当我们获取transform属性时,一个类似于'matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 3, 3, 3, 1)'的字符串(这里有更多的信息返回给translate3d(3px, 3px, 0) )。它存储在转换变量中,我需要解析这个变量,以便获得position变量,以便根据给函数的内容只存储x或y位置的数字值。我想不出怎么解析那个字符串
发布于 2015-07-27 16:20:54
您可以使用正则表达式解析转换字符串:
var regex = /translate3d\(\s*([^ ,]+)\s*,\s*([^ ,]+)\s*,\s*([^ )]+)\s*\)/;
var test = "translate3d( 10px,20px , 30px)"
var result = test.split(regex);
alert('x is '+result[1]+", and y is "+result[2]);发布于 2015-07-27 16:11:56
您可以使用.offset()或.position()获取元素的位置。
它们是不同的,一个相对于文档的获取位置,第二个相对于偏移父的位置。
position = element.offset();
position = element.position();https://stackoverflow.com/questions/31658005
复制相似问题