首页前端开发其他前端知识svg和css3是什么,如何实现环形渐变进度条

svg和css3是什么,如何实现环形渐变进度条

时间2024-03-27 09:10:03发布访客分类其他前端知识浏览802
导读:关于“svg和css3是什么,如何实现环形渐变进度条”的知识点有一些人不是很理解,对此小编给大家总结了相关内容,文中的内容简单清晰,易于学习与理解,具有一定的参考学习价值,希望能对大家有所帮助,接下来就跟随小编一起学习一下“svg和css3...
关于“svg和css3是什么,如何实现环形渐变进度条”的知识点有一些人不是很理解,对此小编给大家总结了相关内容,文中的内容简单清晰,易于学习与理解,具有一定的参考学习价值,希望能对大家有所帮助,接下来就跟随小编一起学习一下“svg和css3是什么,如何实现环形渐变进度条”吧。




在负责的项目中,有一个环形渐变读取进度的效果的需求,于是在网上查阅相关资料整理一下。

代码如下:

!DOCTYPE html>
    
html>
    
head>
    
  meta charset="UTF-8">
    
  title>
    Title/title>
    
  script src="https://code.jquery.com/jquery-3.1.1.min.js">
    /script>
    
/head>
    
body>
    
  div>
    
    svg width="340" height="340" xmlns="http://www.w3.org/2000/svg">
    
      circle r="150" cy="170" cx="170" stroke-width="10" stroke="#FAFAFA" fill="none" />
    
      circle r="150" cy="170" cx="170" stroke-width="35" stroke="url(#linearGradient)" stroke-linejoin="round" stroke-linecap="round" fill="none"/>
    
      circle fill="#FFFFFF" fill-rule="nonzero" cx="320" cy="170" r="12">
    /circle>
    
      defs>
    
        linearGradient x1="0%" y1="80.9878035%" x2="96.9769965%" y2="41.7547666%" id="linearGradient">
    
          stop stop-color="#18A6FF" offset="0%">
    /stop>
    
          stop stop-color="#32B7FF" offset="52.7095376%">
    /stop>
    
          stop stop-color="#0094F1" offset="100%">
    /stop>
    
        /linearGradient>
    
      /defs>
    
    /svg>
    
    div>
    
      div>
    
        span>
    /span>
    span>
    %/span>
    
      /div>
    
    /div>
    
  /div>
    
  script type="text/javascript">

    window.onload=function () {
    
      'use strict';

      var ProgressCircle = (function () {

        function ProgressCircle(percent,radius,elementClass){
    
         this._percent = percent;
      //百分比
         this._radius = radius;
        //圆的半径
         this._elementClass = elementClass;
  
       }


       ProgressCircle.prototype.calcDashOffset = function () {
    
         var circumference;
    
           circumference = Math.PI * (2 * this._radius);
       //计算圆圈的周长
           return Math.round(circumference - this._percent / 100 * circumference);
  //计算圆圈要渲染的 长度!
         }


        //渲染进度条
        ProgressCircle.prototype.createCSS = function() {
    
          return $("." + this._elementClass + " .circle_bar").css('stroke-dashoffset', this.calcDashOffset());

        }
    ;

        //读取效果
        ProgressCircle.prototype.updateText = function () {
    
          $("." + this._elementClass + " .js-donut-figure")[0].innerText = this._percent;

        }


        ProgressCircle.prototype.init = function() {
    
          var _this = this;

          setTimeout(function(){
    
            _this.updateText();
    
            return _this.createCSS();

          }
    ,1000);

        }
    ;
    
        return ProgressCircle;

      }
    )();
    

      let progress = new ProgressCircle(50, 150, 'donut');
    
      progress.init();

    }
    
  /script>
    
  style type="text/css">

  *{
    
    padding:0;

    margin:0  
  }

  .donut{
    
    position: relative;

  }

  .circle_warp{
    
    position: relative;
    
    top: 0;

    left: 0
  }

  .circle_bar {
    
    stroke-dasharray: 942.4777960769379;
      //计算整个圆周的周长公式为Circumstance=2*PI*Radius  2*3.14*半径(此时是半径是150)
    stroke-dashoffset: 942.4777960769379;
    
    transition: stroke-dashoffset 1200ms cubic-bezier(.99,.01,.62,.94);

  }

  .donut_svg{
    
    transform: rotate(-90deg);

  }

  .donut_copy{
    
    text-align: center;
    
    width: 340px;
    
    height: 340px;
    
    top: 40%;
    
    left: 0;
    
    position: absolute;

  }

  .donut_title{
    
    opacity: 0;
    
    font-size: 42px;
    
    color: #171717;
    
    margin-bottom: 2px;
    
    animation: donutTitleFadeLeft 800ms 200ms cubic-bezier(.99,.01,.22,.94) forwards;
    
    transform: translateX(0);
    
    font-weight: bold;

  }

  .donut_spic{
    
    content: "%";
    
    animation: donutTitleFadeRight 800ms 200ms cubic-bezier(.99,.01,.22,.94) forwards;
    
    opacity: 0;
    
    transform: translateY(-20px);

  }

  .donut__text p{
    
    font-size: 16px;
    
    color: #AAAAAA;

  }

  @keyframes donutTitleFadeLeft {

    from {
    
      opacity: 0;
    
      transform: translateX(0);

    }


    to {
    
      opacity: 1;
    
      transform: translateX(10px);

    }

  }


  @keyframes donutTitleFadeRight {

    from {
    
      opacity: 0;
    
      transform: translateX(-30px);

    }

    to {
    
      opacity: 1;
    
      transform: translateX(0);

    }

  }
    
/style>
    
/html>
    



以上就是关于svg和css3是什么,如何实现环形渐变进度条的介绍,本文内容仅供参考,有需要的朋友可以借鉴了解看看,希望对大家学习或工作,想要了解更多欢迎关注网络,小编每天都会为大家更新不同的知识。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

javascripthtmlcsshtml5

若转载请注明出处: svg和css3是什么,如何实现环形渐变进度条
本文地址: https://pptw.com/jishu/654120.html
Spring是什么,有何特点及怎么使用 java内存不足怎么解决,解决方案是什么

游客 回复需填写必要信息