函数没有回复也没有错误

时间:2016-01-11 13:33:08

标签: javascript css

您好我正在使用此代码根据鼠标的位置修改对象的位置。

    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个小时以来,但似乎没有任何工作。 希望你能帮帮我。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

cssPosition = pos[x] * 100;永远不会返回一个数组,但是在构建转换规则时你正在访问前两个索引。

'translate(' + cssPosition[0] + 'px,' + cssPosition[1] + 'px)'

对于cssPosition = position[x];来说似乎是一样的,但是这个实际上可以工作,这取决于你传递给函数的内容。

使新的cssPosition成为一个包含两个维度的数组,您的代码就可以运行。