【问题标题】:smooth scroll with mousewheel to next or previous div使用鼠标滚轮平滑滚动到下一个或上一个 div
【发布时间】:2011-12-31 11:57:48
【问题描述】:

我正在尝试在我的网站上获取 javascript,因此当有人在网站上滚动时,它会自动滚动到具有特定类的下一个或上一个 Div。我正在使用smoothscroll 和scrollto。我还发现了两个我正在尝试组合的代码。但我似乎没有理解整个脚本......

第一个脚本来自http://webdesignerwall.com/tutorials/scrollto-posts-with-jquery。该脚本可以通过按下一个或上一个在 DIV(具有特定类)之间导航。

第二个脚本来自How to enforce a "smooth scrolling" rule for mousewheel, jQuery?(最后一个帖子),它可以让网站在滚动时向下或向上滚动(平滑)一定数量的像素。

我想将这两者结合起来,但这对我来说并不是很直接:/ 如果有人能指出我如何做到这一点,那就太好了。谢谢

最好的问候,

比利海滩


亲爱的拉比,

感谢您的回答。我尝试了您的代码,但似乎无法正常工作。这是我使用的代码:

<head>


<script type="text/javascript" src="Box/jquery.js"></script>
<SCRIPT src="Box/jquery.min.js"></SCRIPT>
<SCRIPT src="Box/jquery.scrollTo-1.4.2-min.js"></SCRIPT>
<SCRIPT src="Box/jquery.localscroll-1.2.7-min.js"></SCRIPT>
<script type="text/javascript" src="Box/jquery.mousewheel.min.js"></script> 


<style type="text/css">
<!--

div {
    border: 1px solid black;
    height: 50px;
}

div.current {
    background-color: orange;
}

-->
</style>


<script type="text/javascript"> 

var current 

$(function() {          
    $('body').mousewheel(function(event, delta) {
        var $current = $('div.current');

        console.log(delta);
        console.log($current);

        if (delta > 0) {
            $prev = $current.prev();

            if ($prev.length) {
                $('body').scrollTo($prev, 100);
                $current.removeClass('current');
                $prev.addClass('current');
            }
        } else {
            $next = $current.next();

            if ($next.length) {
                $('body').scrollTo($next, 100);
                $current.removeClass('current');
                $next.addClass('current');
            }
        }

        event.preventDefault();
    });
});

</script> 



</head>

<body>

<div class="current" id="div">1</div>
<div id="div">2</div>
<div id="div">3</div>
<div id="div">4</div>
<div id="div">5</div>
<div id="div">6</div>
<div id="div">7</div>
<div id="div">8</div>
<div id="div">9</div>
<div id="div">10</div>
<div id="div">11</div>
<div id="div">12</div>
<div id="div">13</div>
<div id="div">14</div>
<div id="div">15</div>
<div id="div">16</div>
<div id="div">17</div>
<div id="div">18</div>
<div id="div">19</div>
<div id="div">20</div>
<div id="div">21</div>
<div id="div">22</div>
<div id="div">23</div>
<div id="div">24</div>
<div id="div">25</div>
<div id="div">26</div>
<div class="current" id="div">27</div>
<div id="div">28</div>
<div id="div">29</div>
<div id="div">30</div>
<div id="div">31</div>
<div id="div">32</div>
<div id="div">33</div>
<div id="div">34</div>
<div id="div">35</div>
<div id="div">36</div>
<div id="div">37</div>
<div id="div">38</div>
<div id="div">39</div>
<div id="div">40</div>
<div id="div">41</div>
<div id="div">42</div>
<div id="div">43</div>
<div id="div">44</div>
<div id="div">45</div>
<div id="div">46</div>
<div id="div">47</div>
<div id="div">48</div>
<div id="div">49</div>
<div id="div">50</div>
<div id="div">51</div>
<div id="div">52</div>
<div id="div">53</div>
<div id="div">54</div>
<div id="div">55</div>
<div id="div">56</div>
<div class="current" id="div">57</div>
</body>
</html>

【问题讨论】:

    标签: html scroll mouse mousewheel smoothing


    【解决方案1】:

    编辑:我稍微调整了小提琴。两个外部脚本之一是使用http:,并且由于链接(编辑前)使用https:,Chrome 会阻止它,除非您按下小盾牌图标。我也更新到最新版本。

    这似乎工作正常:http://jsfiddle.net/9Amdx/1707/

    var current;
    
    $(function() {          
        $('body').mousewheel(function(event, delta) {
            var $current = $('div.current');
    
            console.log(delta);
            console.log($current);
    
            if (delta > 0) {
                $prev = $current.prev();
    
                if ($prev.length) {
                    $('body').scrollTo($prev, 100);
                    $current.removeClass('current');
                    $prev.addClass('current');
                }
            } else {
                $next = $current.next();
    
                if ($next.length) {
                    $('body').scrollTo($next, 100);
                    $current.removeClass('current');
                    $next.addClass('current');
                }
            }
    
            event.preventDefault();
        });
    });
    

    【讨论】:

    • 嘿 lalibi,谢谢你的回答。但我似乎没有得到它的工作。这是我使用的代码:(见上文)谢谢
    • 一直在寻找这种功能,并希望将其应用于我当前的项目,但问题是它似乎不适用于更新的 jquery(1.10)。此功能仅适用于 jquery(1.6.4)
    • 在 mac air 笔记本电脑上是一团糟
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多