梓悦生活

  • 🍟首页
  • 🍪免费资源
  • 🍓Wordpress
  • 🍋琐碎生活
  • 🍘关于
关注周围的人或事,体验人生历程
  1. 首页
  2. Wordpress
  3. 正文

博客返回顶部环形进度效果

2017/08/20 6938点热度 0人点赞 3条评论

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

搜狗截图20141129214647.png

实现方法

确保引入了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="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");

颜色参数即可,默认黑色

 

转载自:http://nimaboke.com/code/251.html

效果:http://www.imjiayin.com

标签: 技巧
最后更新:2017/08/20

Meteor

关注周围的人或事,体验人生历程!

点赞
< 上一篇
下一篇 >

文章评论

  • 明月登楼学习笔记

    不错,过来赞一个先!

    2017/12/03
    回复
  • 豪兔

    博客新手……求问这个JS文件怎么修改啊。我在wordpress后台的外观下面的编辑里面看到我的主题模板有2个JS文件,一个是-custom.js,还一个是modernizr.js,我在custom.JS 文件下把代码全部复制到最后面,结果能看到那个圆环,但是是固定在最底部的……
    它的位置怎么设置呢?另外参考CSS有什么用啊……电脑新手,求指点……

    2018/01/18
    回复
    • Meteor

      @豪兔 圆环的位置是通过CSS定位来设置的,你加入了JS代码,虽然能看到,但位置不对。请将CSS代码加入到你的syste.css。
      可参考演示:pxsky.cn

      2018/01/19
      回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    回复 明月登楼学习笔记 取消回复

    最新 热点 随机
    最新 热点 随机
    哆啦A梦免费转发面板 [教程]AWS免费EC2注册/使用/添加IPV6/SSH连接/删除实例 使用VestaCP搭建邮局(含DKIM,DMARC教程) [教程]利用宝塔面板邮局管理器搭建Roundcube Webmail自建邮局 [测评]喵云互联绍兴电信NAT套餐1测评 iperf3 网络性能测试
    [教程]AWS免费EC2注册/使用/添加IPV6/SSH连接/删除实例哆啦A梦免费转发面板
    Zymic免费6G支持PHP稳定空间 sourceforge无限php/mysql可绑米空间 Linux调整文件系统大小的命令:resize2fs 腾讯微博两周年,完成任务获得2次100%中奖机会,红绿蓝钻+实物大奖等你拿 100MB/1GB/CP/fwp.cc DirectAdmin 1.53.2开心版
    最近评论
    b2b系统 发布于 2 年前(12月29日) 感谢分享
    Meteor 发布于 2 年前(10月20日) 哈哈,友链一直都在,后来换了主题后忘记修改显示数量了,现在恢复好了。
    弋牧 发布于 2 年前(10月12日) 这里已经看不到我的友连了吗?
    彩鸽 发布于 2 年前(10月04日) 写的不错
    B2B海外商城系统 发布于 2 年前(09月21日) 感谢分享
    标签聚合
    域名解析 虚拟主机 Linux技巧 VPS 宝塔 技巧 活动 wordpress
    友情链接
    • Anders Norén
    • Appurse
    • CSS参考手册
    • DeeTeam-迪提姆
    • Fatesinger
    • FreeSSL
    • gandi
    • Internetbs
    • LogoMaker
    • Meteor's Blog
    • PM唐杰
    • SSL For Free
    • WPEX-Themes
    • 优品PPT
    • 免费顶级域名
    • 博客大全
    • 印记
    • 弋牧
    • 挖站否
    • 闫宝龙博客

    COPYRIGHT © 2023 梓悦生活. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang