Креативная кнопка «вверх» с плавной прокруткой страницы

Практически на любом сайте можно встретить скользящею кнопку, так называемой «Вверх», которая за считанные секунды поднимает с конца страницы на ее начала. Это очень удобно особенно, когда страница не имеет дна, то есть очень большая настолько, что устаешь крутить колесико на мышки. Я уже писал об одном варианте, как сделать кнопку «вверх». Но сегодня рассмотрим креативный вариант так же, как и предыдущее с плавной прокруткой и со своей изюминкой.

Весь код состоит из двух частей: непосредственно сам скрипт и стили оформления внешнего вида. Проще, думаю, создать отдельный файл со скриптом, а затем подключить его на сайт чем пряма вставлять весь код в шаблонный файл сайта. Откройте любой редактор, добавьте ниже представленный код и сохраните под название, например, gogotop.js.

var bigfa_scroll = {

    drawCircle: function(id, percentage, color) {

        var width = jQuery(id).width();

        var height = jQuery(id).height();

        var radius = parseInt(width / 2.20);

        var position = width;

        var positionBy2 = position / 2;

        var bg = jQuery(id)[0];

        id = id.split("#");

        var ctx = bg.getContext("2d");

        var imd = null;

        var circ = Math.PI * 2;

        var quart = Math.PI / 2;

        ctx.clearRect(0, 0, width, height);

        ctx.beginPath();

        ctx.strokeStyle = color;

        ctx.lineCap = "square";

        ctx.closePath();

        ctx.fill();

        ctx.lineWidth = 3;

        imd = ctx.getImageData(0, 0, position, position);

        var draw = function(current, ctxPass) {

            ctxPass.putImageData(imd, 0, 0);

            ctxPass.beginPath();

            ctxPass.arc(positionBy2, positionBy2, radius, -(quart), ((circ) * current) - quart, false);

            ctxPass.stroke();

        }

        draw(percentage / 100, ctx);

    },

    backToTop: function($this) {

        $this.click(function() {

            jQuery("body,html").animate({

                scrollTop: 0

            },

            800);

            return false;

        });

    },

    scrollHook: function($this, color) {

        color = color ? color: "#000000";

        $this.scroll(function() {

            var docHeight = (jQuery(document).height() - jQuery(window).height()),

            $windowObj = $this,

            $per = jQuery(".per"),

            percentage = 0;

            defaultScroll = $windowObj.scrollTop();

            percentage = parseInt((defaultScroll / docHeight) * 100);

            var backToTop = jQuery("#backtoTop");

            if (backToTop.length > 0) {

                if ($windowObj.scrollTop() > 100) {

                    backToTop.addClass("button--show");

                } else {

                    backToTop.removeClass("button--show");

                }

                $per.attr("data-percent", percentage);

                bigfa_scroll.drawCircle("#backtoTopCanvas", percentage, color);

            }

        });

    }

}

jQuery(document).ready(function() {

    jQuery("body").append('<div id="backtoTop" data-action="gototop"><canvas id="backtoTopCanvas" width="48" height="48"></canvas><div class="per"></div></div>');

    var T = bigfa_scroll;

    T.backToTop(jQuery("#backtoTop"));

    T.scrollHook(jQuery(window), "#13B9CA");//цвет полосы загрузки
});

Загрузите этот скрипт себе на сайт в любое удобное вам место. После чего подключите в самом низу сайта перед закрывающим тегом </body> (WordPress файл footer.php). На WordPress’e можно выполнить подключение таким образом:

<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/js/gogotop.js"></script>

Или укажите прямой путь к скрипту если другая платформа. И если у вас не подключена библиотека jQuery, то также подключаем и ее.

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js"></script>

В самой последней строчке скрипта обратите внимание на комментарии где указано на возможность изменить цвет полосы визуальной загрузки. По умолчанию цвет будет черным.

Вторая часть, как говорилось выше, состоит из стилей, которые нужно добавить в ваш основной файл.

#backtoTop {
        background-color:#fafafa;
        border-radius:100%;
        bottom:18%;
        height:48px;
        position:fixed;
        right:-100px;
        width:48px;
        transition:0.5s;
        -webkit-transition:0.5s;
         box-shadow: 0 1px 1px 1px rgba(0,0,0,0.1);
}
#backtoTop.button--show{
        right:50px
}
.per{
        font-size:16px;
        height:48px;
        line-height:49px;
        position:absolute;
        text-align:center;
        top:0;
        width:48px;
        color:#13B9CA;
        cursor:pointer
}

.per:before{
        content:attr(data-percent);
}
.per:hover:before{
        content:"▲";
        font-size: 22px;
        line-height: 0;
}

В итоги получаем такой результат:

Посмотреть Demo

2 комментария
  1. Здравствуйте. Как сделать ,чтобы кнопка скрывалась на мобильных устройствах? (маленькие разрешения)

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *