2012-07-12 88 views
0

我試圖建立一個視差滾動網站的左/右移動。除Resize功能外,一切正常。 resize函數似乎在調整整個寬度,而不僅僅是視口當前所在的.item。這會導致一些奇怪的元素移動,隨着元素的移動逐漸變得更加糟糕。Jquery調整功能不起作用

這裏的JavaScript的:

function scrollToPosition(element) { 
if (element !== undefined) { 
    $(".cont").scrollTo(element, 800, { 
     margin: true 
    }); 
} 
} 

$(document).ready(function() { 

var posts = $('.item'); 
var position = 0; //Start Position 
var next = $('#next'); 
var prev = $('#prev').hide(); 

next.click(function(evt) { 
    //Scroll to next position 
    prev.show(); 
    scrollToPosition(posts[position += 1]); 
    if (position === posts.length - 1) { 
     next.hide(); 
    } 
}); 

prev.click(function(evt) { 
    //Scroll to prev position  
    next.show(); 
    scrollToPosition(posts[position -= 1]); 
    if (position === 0) { 
     prev.hide(); 
    } 
}); 

$(window).resize(function() { 
    resizePanel(); 
}); 

}); 

function resizePanel() { 

width = $(window).width(); 
height = $(window).height(); 

mask_width = width * $('.item').length; 

$('#cont').css({width: width, height: height}); 
$('.item').css({width: width, height: height}); 
$('#mask').css({width: mask_width, height: height}); 

} 
+0

你用什麼瀏覽器進行測試?不是歌劇? – Rustam 2012-07-12 18:25:24

回答

1

我認爲你只需要調整在resizePanel()後調整滾動:

function resizePanel(currentElement) { 
    //resize items 
    scrollToPosition(currentElement); 
} 

或可能做同樣的效果,而不會超時:

function resizePanel(currentElement) { 
    //resize items 
    $('.cont').scrollTo(currentElement, 0, {margin: true}); 
} 

並更新resize調用中的代碼返回:

$(window).resize(function(){ 
    resizePanel(posts[position]); 
} 
+0

感謝您的回覆,我不確定我是否理解您的說法,以便進行更改?你介意詳細說明 – 2012-07-12 17:41:33

+0

我試過了,但它給出了一個錯誤,表明該位置沒有定義? – 2012-07-12 17:48:50

+0

resizePanel是在您的變量範圍之外定義的。把你需要的東西作爲一個參數給你。我更新了答案。 – LeGEC 2012-07-12 17:51:43