Other/其他

Canvas实现进度环返回顶部按钮

阿里云

返回顶部对于博主并不陌生,我们在浏览网页的时候,可以看到网页一般右侧底部都会有一个“返回顶部”的按钮,点击返回按钮网页就返回到顶部。具体我们来点炫酷新颖的“Canvas 实现进度环返回顶部按钮”功能,也就是当页面下滑动的时候会在页面的右下角出现这个 Canvas 绘制进度环按钮,点击即可实现返回页面顶部功能。具体效果当页面向下滑动 15%的时候回在页面的右下角出现这个按钮,并且具有 Canvas 绘制进度环的效果。大致原理就是根据滚动距离和文档高度排定滚动百分比然后绘制画布,百分比数字是用 data 储存并使用 css 的 content 属性实现。

1、js 代码

  1.     var bigfa_scroll = {
  2.         drawCircle: function(id, percentage, color) {
  3.             var width = jQuery(id).width();
  4.             var height = jQuery(id).height();
  5.             var radius = parseInt(width / 2.20);
  6.             var position = width;
  7.             var positionBy2 = position / 2;
  8.             var bg = jQuery(id)[0];
  9.             id = id.split("#");
  10.             var ctx = bg.getContext("2d");
  11.             var imd = null;
  12.             var circ = Math.PI * 2;
  13.             var quart = Math.PI / 2;
  14.             ctx.clearRect(0, 0, width, height);
  15.             ctx.beginPath();
  16.             ctx.strokeStyle = color;
  17.             ctx.lineCap = "square";
  18.             ctx.closePath();
  19.             ctx.fill();
  20.             ctx.lineWidth = 3;
  21.             imd = ctx.getImageData(0, 0, position, position);
  22.             var draw = function(current, ctxPass) {
  23.                 ctxPass.putImageData(imd, 0, 0);
  24.                 ctxPass.beginPath();
  25.                 ctxPass.arc(positionBy2, positionBy2, radius, -(quart), ((circ) * current) - quart, false);
  26.                 ctxPass.stroke();
  27.             }
  28.             draw(percentage / 100, ctx);
  29.         },
  30.         backToTop: function($this) {
  31.             $this.click(function() {
  32.                 jQuery("body,HTML").animate({
  33.                     scrollTop: 0
  34.                 },
  35.                 800);
  36.                 return false;
  37.             });
  38.         },
  39.         scrollHook: function($this, color) {
  40.             color = color ? color: "#000000";
  41.             $this.scroll(function() {
  42.                 var docHeight = (jQuery(document).height() - jQuery(window).height()),
  43.                 $windowObj = $this,
  44.                 $per = jQuery(".per"),
  45.                 percentage = 0;
  46.                 defaultScroll = $windowObj.scrollTop();
  47.                 percentage = parseInt((defaultScroll / docHeight) * 100);
  48.                 var backToTop = jQuery("#backtoTop");
  49.                 if (backToTop.length > 0) {
  50.                     if ($windowObj.scrollTop() > 200) {
  51.                         backToTop.addClass("button--show");
  52.                     } else {
  53.                         backToTop.removeClass("button--show");
  54.                     }
  55.                     $per.attr("data-percent", percentage);
  56.                     bigfa_scroll.drawCircle("#backtoTopCanvas", percentage, color);
  57.                 }
  58.             });
  59.         }
  60.     }
  61.     jQuery(document).ready(function() {
  62.         jQuery("body").append('<div id="backtoTop" data-action="gototop"><canvas id="backtoTopCanvas" width="48" height="48"></canvas><div class="per"></div></div>');
  63.         var T = bigfa_scroll;
  64.         T.backToTop(jQuery("#backtoTop"));
  65.         T.scrollHook(jQuery(window), "#d57a21");
  66.     });
也想出现在这里?联系我们
创客主机

2、调用 js

在 header.php 中的添加以下代码:

  1. <script src="<?php echo get_template_directory_uri(); ?>/js/jindu.js"></script>

3、css 样式

  1. #backtoTop {  
  2.     background-color:#eee;  
  3.     border-radius:100%;  
  4.     bottombottom:10%;  
  5.     height:48px;  
  6.     position:fixed;  
  7.     rightright:-100px;  
  8.     width:48px;  
  9.     transition:0.5s;  
  10.     -webkit-transition:0.5s  
  11. }  
  12. #backtoTop.button--show{  
  13.     rightright:10px  
  14. }  
  15. .per{  
  16.     font-size:16px;  
  17.     height:48px;  
  18.     line-height:48px;  
  19.     position:absolute;  
  20.     text-align:center;  
  21.     top:0;  
  22.     width:48px;  
  23.     color:#555;  
  24.     cursor:pointer  
  25. }  
  26. .per:before{content:attr(data-percent)}  
  27. .per:hover:before{content:"▲";font-size: 22px;line-height: 0;}

当然如果您想修改返回顶部进度环的颜色,T.scrollHook(jQuery(window), "#d57a21 里的颜色参数即可,可以在颜色查询对照表中选择。

Canvas 实现进度环返回顶部按钮

已有 412 人购买
查看演示升级 VIP立刻购买

收藏
(0)

发表回复

热销模板

Ashade - 作品展示摄影相册WordPress汉化主题
LensNews

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!