我是靠谱客的博主 怕孤单花生,最近开发中收集的这篇文章主要介绍css 实现彩色渐变圆环进度条实现原理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在这里插入图片描述

<template>
  <svg width="440" height="440" viewBox="0 0 440 440">
    <defs>
      <linearGradient x1="1" y1="0" x2="0" y2="0" id="gradient">
        <stop offset="0%" stop-color="#e52c5c"></stop>
        <stop offset="100%" stop-color="#ab5aea"></stop>
      </linearGradient>
    </defs>
    <circle cx="220" cy="220" r="170" class="circle-track"></circle>
    <circle
      cx="220"
      cy="220"
      r="170"
      transform="rotate(-90 220 220)"
      class="circle-bar"
    ></circle>
    <text
      class="text"
      x="50%"
      y="50%"
      dominant-baseline="middle"
      text-anchor="middle"
    >
      90%
    </text>
  </svg>
</template>

<style scoped>
circle {
  stroke-width: 50px;
  fill: none;
  stroke-dasharray: 1069px;
  /* 灰色进度槽 */
  stroke: #f0f1f5;
}
/* 渐变进度条 */
.circle-bar {
  /* stroke-dashoffset慢慢变小,进度条就会慢慢出现 */
  stroke-dashoffset: 106.9px;
  stroke: url(#gradient);
}
</style>

改变stroke-dashoffset属性值,就能设置对应的进度效果

其中的1069px是圆环的周长,使用公式Length=Math.PI**2计算得来。由于圆形描边是从3点钟方向开始的,因此第二个<circle>元素设置了transform="rotate(-90220220)"逆时针旋转90度让描边从圆的顶部开始。

如果是不规则路径,则可以使用下面两行JavaScript代码获得路径的长度值:

var path = document.querySelector('path');
var length = path.getTotalLength();

实现原理

设置两个SVG<circle>元素,下层的<circle>元素使用灰色描边,作为进度槽;上层的<circle>元素设置为虚线描边,同时使用渐变进行描边填充。然后通过改变stroke-dashoffset的属性值就可以让渐变描边一点一点地出现,于是一个彩色渐变圆环进度条效果就实现了。

最后

以上就是怕孤单花生为你收集整理的css 实现彩色渐变圆环进度条实现原理的全部内容,希望文章能够帮你解决css 实现彩色渐变圆环进度条实现原理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(53)

评论列表共有 0 条评论

立即
投稿
返回
顶部