плавная прокрутка с помощью колесика мыши до следующего или предыдущего раздела - PullRequest
4 голосов
/ 17 ноября 2011

Я пытаюсь получить javascript на своем сайте, поэтому, когда человек прокручивает сайт, он автоматически переходит к следующему или предыдущему Div с определенным классом. Я работаю с плавной прокруткой и прокруткой. Я также нашел два кода, которые я пытаюсь объединить. Но я, кажется, не понимаю всего сценария ...

Первый скрипт из http://webdesignerwall.com/tutorials/scrollto-posts-with-jquery. Этот скрипт позволяет перемещаться между DIV (с определенным классом), нажимая следующий или предыдущий.

Второй сценарий взят из Как применить правило «плавной прокрутки» для колеса мыши, 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>

1 Ответ

1 голос
/ 17 ноября 2011

РЕДАКТИРОВАТЬ : Я немного подправил скрипку. Один из двух внешних скриптов использовал 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();
    });
});
...