2013-08-19 34 views
3

我使用的是滾動jquery插件,滾動的寬度是瀏覽器的寬度,所以當我的瀏覽器寬度小於內容寬度時,我希望內容從瀏覽器的中心開始。平滑滾動以在中心開始?

下面是我對用於居中內容的像素數量的看法。

JQUERY

var totalWidth = 0; 
$('.scrollableArea img').each(function(){ 
    totalWidth += parseInt($(this).width(), 10); 
}); 

//totalWidth is the width of the content 

var containWidth = $('#makeMeScrollable').width(); //browser width 

containWidth /= 2; 
totalWidth /= 2; 
startWidth = containWidth - totalWidth; 

有沒有什麼辦法可以讓它如此滾動內容開始startWidth從左邊走呢?

如果內容寬度小於瀏覽器寬度,則scrollDiv的其餘部分用75px的div填充。

所以HTML看起來像

HTML

<div class="scrollableArea"> 
    <img/> 
    <img/> 
    <img/> 
    <div class="filler"/> 
    <div class="filler"/> 
    <div class="filler"/> 
    <div class="filler"/> 
    ...etc 
</div> 

這裏是插件網站http://www.smoothdivscroll.com/

回答

0

jQueryv1.8.3 +包含內置的瀏覽器滾動的效果。你可以利用這個建於功能如下:

$('.scrollableArea').scrollLeft(startWidth); 

這裏是提供了jQuery來源:

// Create scrollLeft and scrollTop methods 
jQuery.each({scrollLeft: "pageXOffset", scrollTop: "pageYOffset"}, function(method, prop) { 
var top = /Y/.test(prop); 

jQuery.fn[ method ] = function(val) { 
    return jQuery.access(this, function(elem, method, val) { 
     var win = getWindow(elem); 

     if (val === undefined) { 
      return win ? (prop in win) ? win[ prop ] : 
       win.document.documentElement[ method ] : 
       elem[ method ]; 
     } 

     if (win) { 
      win.scrollTo(
       !top ? val : jQuery(win).scrollLeft(), 
       top ? val : jQuery(win).scrollTop() 
      ); 

     } else { 
      elem[ method ] = val; 
     } 
    }, method, val, arguments.length, null); 
}; 
}); 
0

平滑滾動股利有a method called move,使用它可以使滾動移動您指定的像素數。

所以,如果你想讓它滾動100個像素給你使用這樣的方法正確:

$("#makeMeScrollable").smoothDivScroll("move", 100); 

所以如果你有在你想讓它開始像素位置,可以使移動當滾動器已經初始化時。我沒有測試過這個代碼,但它應該沿着這些線路工作:

$("#makeMeScrollable").smoothDivScroll({ 
    setupComplete: function(eventObj, data) { 
     $("#makeMeScrollable").smoothDivScroll("move", startWidth); 
    } 
}); 

我希望我正確理解你的問題。 :-)