您好我正在使用此代码根据鼠标的位置修改对象的位置。
function layerCss(parallax, px, offset, size, position, pointer) {
var pos = [],
cssPosition,
cssMargin,
x = 2,
css = {};
while (x--) {
if (parallax[x]) {
pos[x] = parallax[x] * pointer[x] + offset[x];
// We're working in pixels
if (px[x]) {
cssPosition = position[x];
cssMargin = pos[x] * -1;
}
// We're working by ratio
else {
cssPosition = pos[x] * 100 + '%';
cssMargin = pos[x] * size[x] * -1;
}
// Fill in css object
if (x === 0) {
css.left = cssPosition;
css.marginLeft = cssMargin;
}
else {
css.top = cssPosition;
css.marginTop = cssMargin;
}
}
}
return css;
}
现在我想尝试使用transform修改对象的位置:translate(x,y)而不是left,top,
的CSS。职位给了我2个值,但功能不再适用
function layerCss(parallax, px, offset, size, position, pointer) {
var pos = [],
cssPosition,
cssMargin,
x = 2,
css = {};
while (x--) {
if (parallax[x]) {
pos[x] = parallax[x] * pointer[x] + offset[x];
// We're working in pixels
if (px[x]) {
cssPosition = position[x];
cssMargin = pos[x] * -1;
}
// We're working by ratio
else {
cssPosition = pos[x] * 100;
cssMargin = pos[x] * size[x] * -1;
}
// Fill in css object
css.transform = 'translate(' + cssPosition[0] + 'px,' + cssPosition[1] + 'px)';
}
}
return css;
}
我'试图弄清楚自2个小时以来,但似乎没有任何工作。 希望你能帮帮我。
感谢您的帮助!
答案 0 :(得分:0)
cssPosition = pos[x] * 100;
永远不会返回一个数组,但是在构建转换规则时你正在访问前两个索引。
'translate(' + cssPosition[0] + 'px,' + cssPosition[1] + 'px)'
对于cssPosition = position[x];
来说似乎是一样的,但是这个实际上可以工作,这取决于你传递给函数的内容。
使新的cssPosition
成为一个包含两个维度的数组,您的代码就可以运行。