好看的进度环返回按钮

访客3年前关于黑客接单504

在杨小杰博客看到的

在以前某博客的某页面也见过类似效果

分享给大家

大致原理就是根据滚动距离和文档高度排定滚动百分比然后绘制画布,百分比数字是用data储存并使用css的 content属性实现。

Canvas进度环返回按钮实现 *** :

确保引入了jquery,下面的代码加入到你的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() > 200) {
                    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="7dd5-b191-ca24-62c2 per"></div></div>');
    var T = bigfa_scroll;
    T.backToTop(jQuery("#backtoTop"));
    T.scrollHook(jQuery(window), "#cc0000");
});

部分css 仅供参考

#backtoTop{background-color:#eee;border-radius:100%;bottom:10%;height:48px;position:fixed;right:-100px;width:48px;transition:0.5s;-webkit-transition:0.5s}
#backtoTop.button--show{right:10px}
.per{font-size:16px;height:48px;line-height:48px;position:absolute;text-align:center;top:0;width:48px;color:#555;cursor:pointer}
.per:before{content:attr(data-percent)}
.per:hover:before{content:"↑";font-size:20px}

修改进度环颜色,则修改T.scrollHook(jQuery(window,'#000000'));的颜色参数即可,默认黑色。

如果修改点击图标就.per:hover里面的content内容。可以引入web图标

原文作者枫叶网

相关文章

不用代码也能隐藏QQ右上方更多按钮 防止域名被举报

本文是 不用代码也能隐藏QQ右上方更多按钮 防止域名被举报 相信很多资源站长都有一个困惑,自己好不容易搭建好的网站没几天域名就红了,内容并不一定违规,那毋庸置疑,域名肯定是被某些人给举报了,...

bing每日一图做网站背景

bing图片,清晰而且精美,做背景是不错的选择,而且每日一图 ps:选择强迫症的读音 第一步:创建一个bing.php文件,放入下列代码 <?php $str=file_get_conte...

一键还原B站BV号为AV号HTML网页源码

本文是分享:一键还原B站BV号为AV号HTML网页源码 快速还原BV为AV号,现在替换BILIBILI视频网页链接中的BV号为AV号依旧可以访问。 源码为网络看到,暂不明确作者。api调用地址:htt...

一言简单用法

给网站引入一言 随机一句话 <html>   <head>   <script src="http://libs.baidu.com/jquery/2.0.0/jqu...

简单理解jQuery中$.getJSON、$.get、$.post、$.ajax用法

1.$.getJSON   $.getJSON()是专门为ajax获取json数据而设置的,并且支持跨域调用,其语法的格式为: $.getJSON(       url,             ...

限制标题文字字数css或php

首先说一下css限制字数的方法 因为如果你需要限制字符 本人建议使用css Css好处是隐藏文字 并不是去截字符 所以对SEO优化有很大的好处的 text-overflow 1、clip:表示不显示省...