美文网首页
element 环形进度条渐变

element 环形进度条渐变

作者: ai耳边的呢喃 | 来源:发表于2020-11-30 16:09 被阅读0次
环形渐变进度条

代码

<template>
<div class="progress-wrap">
 <!--// 进度条代码-->
  <div class="progress-item">
   <el-progress type="circle" :percentage="percentage" :stroke-width="18" :width="120"
    :format="format" class="my_pross"></el-progress>    
  </div>
  <!-- // 新建 SVG -->
<div class="svg-box">
  <!-- 渐变绿色 -->
  <svg width="100%" height="100%">
   <defs>
    <linearGradient id="green" x1="100%" y1="0%" x2="0%" y2="100%">
    <stop offset="0%" style="stop-color: rgb(186, 255, 110)" stop-opacity="1"></stop>
    <stop offset="100%" style="stop-color: rgb(44, 185, 52)" stop-opacity="1"></stop>
     </linearGradient>
  </defs>
 </svg>
  <!-- 渐变黄色 -->
  <svg width="100%" height="100%">
    <defs>
      <linearGradient id="orange" x1="10%" y1="0%" x2="0%" y2="100%">
    <stop offset="0%" style="stop-color: rgb(255, 217, 68)" stop-opacity="1"></stop>
    <stop offset="100%" style="stop-color: rgb(255, 147, 39)" stop-opacity="1"></stop>
      </linearGradient>
    </defs>
  </svg>
<!-- svg 内阴影 -->
  <svg width="100%" height="100%">
    <filter id="innershadow" x="-50%" y="-50%" width="200%" height="200%">
      <feComponentTransfer in="SourceAlpha">
        <feFuncA type="table" tableValues="1 0" />
      </feComponentTransfer>
      <feGaussianBlur stdDeviation="2" />
      <feOffset dx="0" dy="1" result="offsetblur" />
      <feFlood flood-color="#ddd" floodOpacity="0.1" result="color" />
      <feComposite in2="offsetblur" operator="in" />
      <feComposite in2="SourceAlpha" operator="in" />
      <feMerge>
        <feMergeNode in="SourceGraphic" />
          <feMergeNode />
      </feMerge>
    </filter>
  </svg>
</div>
</div>

使用 js 或 css 修改进度条样式,2 种方法视情况取一

js修改样式,有多个进度条且颜色不一时

<script>
// 有多个进度条时传入序号 i 进行区分,percentage为进度
methods: {
  svgColor(i, percentage) {
    const progress = document.getElementsByClassName('my_pross')[i];
    const svg = progress.querySelector('svg > path:nth-child(2)');
    if ( percentage < 60 ) {
      svg.style.stroke = 'url(#orange)'
    } else {
      svg.style.stroke = 'url(#green)'
    }
  },
// 环内显示的内容
  format(percentage) {
    percentage > 60 ? '优秀' : `${percentage}%`
  }
}

</script>

css 修改样式,颜色统一时

<style lang="scss">

.progress-item {
// 进度条颜色
  svg>path:nth-child(2) {
   stroke: url(#green);
  }
// 修改圆环底色
  .el-progress-circle__track {
    stroke: #F0F0F0;
    filter: url(#innershadow);  // 圆环底色内阴影
    stroke-width: 10px !important;  // 大小
  }
// 修改进度条方向(原是顺时针加载,改为逆时针加载)
  .my_pross {
    transform: rotateY(180deg);
  }
// 修改进度条内容方向
  .el-progress--circle .el-progress__text, .el-progress--dashboard .el-progress__text {
    transform: rotateY(180deg) translate(0, -50%);
   }
}
</style>
环形渐变进度条

相关文章

网友评论

      本文标题:element 环形进度条渐变

      本文链接:https://www.haomeiwen.com/subject/qygrwktx.html