js实现可调节的环形进度条效果代码

代码语言:html

所属分类:进度条

代码描述:js实现可调节的环形进度条效果代码,可调节进度、bar、选区及raduis。

代码标签: js 调节 环形 进度条

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
<style>
    body {
  background: #060f1e;
  color:white;
}
.control-panel{
  text-align:center;
}
input[type='range'] {
  margin: 0 auto;
  display: inline-block;
  width: 20em;
}
</style>

</head>

<body>
    <!-- partial:index.partial.html -->
    <circular-progress id="cp" min="0" max="100" value="100" sections="10" bars="100" radius="10em"></circular-progress>
    <div class="control-panel">
        <div>Progress: <input id="progress" type="range" min="0" max="100" value="100" /></div>
        <div>Sections: <input id="sections" type="range" min="5" max="20" value="9" /></div>
        <div>Bars: <input id="bars" type="range" min="50" max="100" value="90" /></div>
        <div>Radius: <input id="radius" type="range" min="7" max="20" value="10" /></div>
    </div>
    <!-- partial -->
    <script >
        var cp = document.getElementById("cp");
document.getElementById("progress").addEventListener("input", (e)=>{
  cp.setAttribute("value", e.target.value);
});
document.getElementById("sections").addEventListener("input", (e)=>{
  cp.setAttribute("sections", e.target.value);
});
document.getElementById("bars").addEventListener("input", (e)=>{
  cp.setAttribute("bars", e.target.value);
});
document.getElementById("radius").addEventListener("input", (e)=>{
  cp.setAttribute("radius", e.target.value+"em");
});


class CircularProgress extends HTMLElement{
  static get observedAttributes(){
    return ["min", "max", "value", "sections", "bars", "radius"];
  }
  
  attributeChangedCallback(name, oldValue, newValue){
    switch(name){
      case "sections":
        this.segs = parseInt(newValue || oldValue || "10");
        this.renderOuterRing();
        break;
      case "bars":
        this.bars = parseInt(newValue || oldValue || "10");
        this.renderInnerBars();
        this.updateUI();
        break;
      case "value":
        this.value = parseInt(newValue || oldValue || "10");
        this.updateUI();
        break;
      case "max":
      case "min":
        this.updateUI();
        break;
      case "radius":
        this.radius = newValue || oldValue || "10em";
        this.wrapper.style.setProperty("--r", this.radius);
        this.updateUI();
        break;
    }
  }
  
  updateUI(){
    this.textContaner.textContent = this.getProgress() + "%";
    try{
      this.barContainer.querySelector(".progress-block.current").classList.remove("current");
    }catch(e){}
    
    var current = this.getProgress();
    current = current &g.........完整代码请登录后点击上方下载按钮下载查看

网友评论0