纯CSS实现全圆进度

110 阅读1分钟

vue代码如下:

<template>  <div class="pie" @click="changeTurns">    <span class="innerPie"></span>  </div></template><script> export default {    name: "echarts",    data() {      return {       count: 0      };    },      methods:{      changeTurns(){        // document.styleSheets[1].addRule('.pie::before','transform: rotate(.5turn)');        this.count = this.count + 0.1        let outDom = document.getElementsByClassName('pie')[0]        let innerDom = document.getElementsByClassName('innerPie')[0]        // let cssDom = window.getComputedStyle(turnDom, '::before').getPropertyValue('transform');        if(this.count > 0.5){ //这里是比较笨的方式          outDom.style.backgroundColor = "red"          outDom.style.backgroundImage = "linear-gradient(to right, transparent 50%, #FFFFFF 0)"        }        innerDom.style.transform =  `rotate(${this.count}turn)`      }    }         }</script><style scoped>  .pie {    width: 100px;    height: 100px;    border-radius: 50%;    /* background: red; */    background-color: #FFFFFF;    border: 1px solid rgb(252, 11, 11);    background-image: linear-gradient(to right, transparent 50%, red 0);    /* background-image: linear-gradient(to right, transparent 50%, #FFFFFF 0); */} .innerPie {    content: '';    display: block;    margin-left: 50%;    height: 100%;    border-radius: 0 100% 100% 0 / 50%;    background-color: inherit;    transform-origin: left;    transform: rotate(0.25turn);     /*  90deg就是0.25turn。也就是写 transform: rotate(1turn);等价于 transform: rotate(360deg); */}</style>

效果如下: