2016-01-11 56 views
0

你好我正在使用這段代碼根據鼠標的位置來修改對象的位置。函數返回沒有響應,沒有錯誤

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; 
} 

現在我想嘗試修改與變換對象的位置:翻譯(X,Y),而不是左,上,

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

cssPosition = pos[x] * 100;永遠不會返回數組,但您在構建翻譯規則時訪問前兩個索引。

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

這似乎爲cssPosition = position[x];相同,但是這一次可能實際工作,這取決於你傳遞到功能是什麼。

使新的cssPosition具有兩個維度的數組,並且您的代碼將工作。

+0

我刪除了像素和比例部分並添加了cssPosition = pos [x];和alert(cssPosition); 現在我得到無限警報與2個不同的數字,只要我不移動鼠標,但轉換仍然無法工作 – user4075462

+0

並且是'pos [x]'一個數組? – Shomz

+0

當我嘗試警報pos [x]我也得到2個不同數字的無限警報,只要我不移動鼠標 – user4075462