Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » jQuery » Плавный скроллинг страницы

Плавный скроллинг страницы


     06.07.2014    scroll, dle, php, mysql, google    jQuery, Общие вопросы по PHP    17073

вопрос
Здравствуйте, недавно зашел на dle-news и увидел прикольный хак.
Прокрутка сайта плавная и очень приятная.
Знаю про модуль для chrome, но как осуществить это при помощи php+js?

Заранее спасибо!

Ответил: fh79655l123


Нашёл то что нужно GitHub
У меня стоит DLE 10.1 и все работает
Вставлял перед
<script type='text/javascript' src='{THEME}/js/SmoothScroll.js'></script>

В начале скрипта можно менять скорость и расстояние прокрутки.

14 комментариев

vk_159926832
Юзер

vk_159926832 - 6 июля 2014 12:51 -

PHP тут совсем не нужен, мне тоже интересно, присоединяюсь к теме.

sergeevizh
Юзер

sergeevizh - 6 июля 2014 14:55 -

CSS: вставляем в конец styles.css

#scroller{
    position: fixed;    
    /** позиция кнопки scroll to top **/
    bottom: 30px;  
    /** картинка кнопки наверх**/
    background: transparent url("../images/arrow.png") no-repeat left top;  
    width: 32px;
    height: 32px;
    cursor: pointer;
    /** скрываем кнопку в начале **/
    display:none;
}


Находим картинку подходящую под шаблон и прописываем ее вместо arrow.png


JS: вставляем до секции </head>

<script>
$(document).ready(function(){  
    $(window).scroll(function () {
        if ($(this).scrollTop() > 0) {
            $('#scroller').fadeIn();
        } else {
            $('#scroller').fadeOut();
        }
    });
    $('#scroller').click(function () {
        $('body,html').animate({
            scrollTop: 0
        }, 400);
        return false;
    });
});
</script>

Gopr
Юзер

Gopr - 6 июля 2014 14:59 -

Наверное имелся в веду весь скрол сайта, без кнопки вверх.

Twelvee
Юзер

Twelvee - 6 июля 2014 15:18 -

Именно, скролл к якорю это довольно частая тема, а вот именно всего сайта для меня в новинку

sergeevizh
Юзер

sergeevizh - 6 июля 2014 15:32 -

Twelvee, тоже заинтересовался. нашел пару реализаций, сейчас тест провожу.
1. http://javascript.ru/forum/dom-window/4885-plavnyjj-skroll-koljosikom.html
2. http://toster.ru/q/90865
3. Это паралакс эффект.

http://road4me.com/for_chrome/smooth-scroll-thin-scroll-bar-tab-stack/ а так можно для себя настроить в Хроме

Twelvee
Юзер

Twelvee - 6 июля 2014 16:01 -

Не совсем то, что я искал. Точнее половина Вашего ответа верна) Paralax это эффект для скроллинга по вейпоинтам (якорям).
А мне нужен именно скролл всего сайта.

Я в яваскрипте не очень сильно разбираюсь, поставил скрипт с тостера, после чего мой сайт вообще перестал скролериться))
Руки не из того места так сказать)

Мне бы скрипт, который работает, чтобы я его вставил в <script></script> и мой сайт начал красиво и плавно скройлериться

sergeevizh
Юзер

sergeevizh - 6 июля 2014 16:04 -

Я вас как раз правильно понял, на сайте dle-news.ru используется код паралакса. Не до определенного якоря, а именно сам плавный скрол.
Тот что с тостера и у меня не захотел работать. Есть реализация, но пока не тестил.

Twelvee
Юзер

Twelvee - 6 июля 2014 16:22 -

Я тут еще немножко покапал в гугле и нашел вот что:
http://manos.malihu.gr/jquery-custom-content-scroller/
В примерах есть скролл всей страницы, сейчас попробую и отпишусь)

Twelvee
Юзер

Twelvee - 6 июля 2014 16:36 -

Хаха)) Я сделал это!) Знаю что не грамотно и безобразно, но работает!)
Зашел значит я в исходный код dle-news и вижу такой скриптик <script src="/templates/Default/js/application.js"></script>

Подключаю к себе на сайт
<script src="http://dle-news.ru/templates/Default/js/application.js"></script>


И готово!)

Gopr
Юзер

Gopr - 6 июля 2014 20:55 -

Прикольно, только вот выдрать бы из скрипта именно ту часть которая отвечает за плавный скрол, а то 250+ кб грузить как то....

ufh2
Юзер

ufh2 - 7 июля 2014 00:36 -

Прикольно, только вот выдрать бы из скрипта именно ту часть которая отвечает за плавный скрол, а то 250+ кб грузить как то....


Присоединяюсь кто поможет?

fh79655l123
Юзер

fh79655l123 - 29 августа 2014 04:36 -

Поискал в google и нашёл только вот это Nicescroll 3, но он меняет вид скролера и я не понял как сделать его стандартным.

На сайте прописывал так
<script src="{THEME}/js/jquery.nicescroll.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    $(document).ready(function() {
            $("html").niceScroll({
                background: "#ccc",
                cursorwidth: 9,
                cursorborderradius: 0,
                cursoropacitymin: 1,
                scrollspeed: 74,
                mousescrollstep: 28,
                enablemousewheel: true,
                hidecursordelay: 100,
                cursorfixedheight: 80
            });
        }
    );
  </script>


Еще такую штуку нашёл только она делает плавную прокрутку кто установил плагин =)

fh79655l123
Юзер

fh79655l123 - 29 августа 2014 05:52 -

В ответе я имел виду перед
</head>

piast
Юзер

piast - 13 сентября 2014 15:20 -

вот решение, взятое отсюда: https://github.com/simov/simplr-smoothscroll

<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery-mousewheel/3.0.6/jquery.mousewheel.min.js" type="text/javascript" charset="utf-8"></script>
<script>
;(function($) {
    'use strict';
    
    $.srSmoothscroll = function(options) {
    
    var self = $.extend({
        step: 55,
        speed: 400
    }, options || {});
    
    // private fields & init
    var win = $(window),
        doc = $(document),
        top = 0,
        step = self.step,
        speed = self.speed,
        viewport = win.height(),
        body = $.browser.webkit ? $('body') : $('html'),
        wheel = false;

    // events
    $('body').mousewheel(function(event, delta) {

        wheel = true;

        if (delta < 0) // down
            top = (top+viewport) >= doc.height() ? top : top+=step;

        else // up
            top = top <= 0 ? 0 : top-=step;

        body.stop().animate({scrollTop: top}, speed, function () {
            wheel = false;
        });

        return false;
    });

    win
    .on('resize', function (e) {
        viewport = win.height();
    })
    .on('scroll', function (e) {
        if (!wheel)
            top = win.scrollTop();
    });
    
    };
})(jQuery);

$(function () {
    $.srSmoothscroll();
});
</script>

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх