build semi circle progress bar with round corners and shadow in javascript and CSS

后端 未结 2 777
夕颜
夕颜 2021-01-06 06:52

I searched a lot and finding nothing on it. I want to make a progress bar with round corners.progress bar need to have shadow. All I did a

2条回答
  •  盖世英雄少女心
    2021-01-06 07:33

    @jaromanda for suggestion of learning SVG.

    Yes is looks very hard to achieve from border-radius. So i looked into SVG and find it pretty handy. Here is my snippet:

    // progressbar.js@1.0.0 version is used
    // Docs: http://progressbarjs.readthedocs.org/en/1.0.0/
    
    var bar = new ProgressBar.SemiCircle(container, {
      strokeWidth: 10,
      color: 'red',
      trailColor: '#eee',
      trailWidth: 10,
      easing: 'easeInOut',
      duration: 1400,
      svgStyle: null,
      text: {
        value: '',
        alignToBottom: false
      },
      
      // Set default step function for all animate calls
      step: (state, bar) => {
        bar.path.setAttribute('stroke', state.color);
        var value = Math.round(bar.value() * 100);
        if (value === 0) {
          bar.setText('');
        } else {
          bar.setText(value+"%");
        }
    
        bar.text.style.color = state.color;
      }
    });
    bar.text.style.fontFamily = '"Raleway", Helvetica, sans-serif';
    bar.text.style.fontSize = '2rem';
    
    bar.animate(0.45);  // Number from 0.0 to 1.0
    #container {
      width: 200px;
      height: 100px;
    }
    
    svg {
      height: 120px;
      width: 200px;
      fill: none;
      stroke: red;
      stroke-width: 10;
      stroke-linecap: round;
      -webkit-filter: drop-shadow( -3px -2px 5px gray );
      filter: drop-shadow( -3px -2px 5px gray );
      }
    
    
    

提交回复
热议问题