让SmoothDivScroll从可滚动区域的中心开始

时间:2012-01-09 21:02:05

标签: javascript jquery plugins positioning

我正在尝试将jQuery插件SmoothDivScroll(http://www.smoothdivscroll.com/)从其包含内容的中心开始,因此在加载时左右两侧都有滚动条。我知道有一个startAtElementId选项,但这不允许我从中心开始。

我已经尝试计算中心点并将其应用于适当的元素,但是左滚动总是在它预期之前停止并且右边元素浮动在下面。

尝试使用这个Js没有运气:

   $("div#scroller").smoothDivScroll();
   var halfWayDoc = $(document).width() / 2;
   var halfWayScrollArea = $("#scroller .scrollableArea").width() /2;
   var halfWay = halfWayDoc - halfWayScrollArea;
   var scrollArea = $("#scroller .scrollableArea").width(); 
   var scrollAreaAdjust = scrollArea + halfWay;
   $("#scroller .item:first-child").css("margin-left",halfWay);
   $("#scroller .item:last-child").css("margin-right",halfWay);
   $("#scroller .scrollableArea").width(scrollAreaAdjust);

HTML看起来像这样:

<div id="scroller">
    <div class="scrollingHotSpotLeft"></div>
    <div class="scrollingHotSpotRight"></div>
    <div class="scrollWrapper">
        <div class="scrollableArea">
            <div class="item">
                <img src="assets/images/detail/Erdem-A-W-11-B2-sml.jpg" alt="example"/> 
            </div>  
                        ...
            <div class="item">
                <img src="assets/images/detail/Erdem-A-W-11-B2-sml.jpg" alt="example"/> 
            </div> 

        </div>
    </div>
</div>

任何帮助或指示表示赞赏。

干杯, 肖恩

2 个答案:

答案 0 :(得分:2)

以下是我建议的解决方案: - )

// Element for Scroll
var scrollElement = $("div#scroller");

// Enable Smooth Div Scroll
scrollElement.smoothDivScroll();

// Find out Scrollable area's width
var halfWidth = $("div#scroller .scrollableArea").width()/2;

// Force scroller to move to half width :-)
scrollElement.data("scrollWrapper").scrollLeft(halfWidth);

我更新小提琴,所以你可以看一下这个更新:

我希望这会有所帮助: - )

答案 1 :(得分:0)

网站http://www.smoothdivscroll.com/index.html#quickdemo中的基本示例正在实施该功能。动画从ID为“startAtMe”的图像开始

$("div#makeMeScrollable").smoothDivScroll({ autoScroll: "onstart", autoScrollDirection: "backandforth", autoScrollStep: 1, autoScrollInterval: 15, startAtElementId: "startAtMe", visibleHotSpots: "always" });

。您是否尝试通过为要开始的元素指定id并将startAtElementId:“startAtMe”传递给smoothDivScroll函数?