vue 最简单的环形进度条_progressBar

在做android开发的时候使用progressBar是比较方面的 ,因为官方提供了组件直接使用就可以。可vue官方并没有类似组件需要自己实现,百度、github看了一圈,发现实现一个简单的环形进度条做的都比较复杂,画挡板、画三个圈,一个底环、一个圆环、一个移动的环,太冗余,所以自己琢磨了一下分享出来,希望有所帮助。

思路:画一个圈进行旋转:

先看看效果:

    <template>

    <div class= "box" >

    <div class= "clip" :style= "clipStyle"></div>

    </div>

    </template>

<script>

export default {

    name: "test",

    mounted(){ 

        let rotate =0

        setInterval(() => {


            if (rotate >= 100) {

            rotate = 0;

            }

            rotate++;

            let transform = "rotate(" + 3.6 * rotate + "deg)"

            this.$data.clipStyle.transform= transform

        }, 20);

    },

    data(){

        return {

            clipStyle:{

                transform:"rotate(" + 3.6 * 0+ "deg)"

            }

        }

    }

};

</script>

<style scoped>

.box{

    position: relative;

    width: 200px;

    height: 200px;

    overflow: hidden;

}

.clip{

    height: 100%;

    box-sizing: border-box;

    border-top: 10px solid lightblue;

    border-left: 10px solid lightblue;

    border-right: 10px solid #ccc;

    border-bottom: 10px solid #ccc;

    border-radius: 50%;

}

</style>

### 推荐的 Vue.js 环形进度条插件 #### vue-circle-progress 组件介绍 `vue-circle-progress` 是一款用于绘制动圆形进度条Vue.js 组件[^1]。该组件不仅能够提供动态且视觉上吸引人的圆形进度条,还具备轻量级和高度可定制的特点。通过其简洁的 API 和丰富的配置选项,可以轻松地为网页增添独特魅力。 #### 安装与基本使用方法 为了在项目中集成此插件,可以通过 npm 或者 cnpm 进行安装: ```bash npm install vue-circle-progress --save ``` 或者对于国内用户来说可能更方便的是: ```bash cnpm install vue-circle-progress --save ``` 接着,在项目的相应部分引入并注册这个组件即可开始使用它来展示环形进度条数据。下面是一个简单的例子展示了如何定义模板以及脚本逻辑[^3]: ```html <template> <div class="wrap-progress"> <!-- Circle Progress Bar --> <circle-progressbar :id="uniqueId" :bar-color="colorScheme.barColor" :background-color="colorScheme.backgroundColor" :width="size.width" :radius="size.radius" :progress="currentProgress" :is-animation="animationEnabled"/> </div> </template> <script> import circleProgressbar from 'vue-circle-progress'; export default { name: "CircularProgressBar", components: { circleProgressbar }, props: ['uniqueId', 'colorScheme', 'size'], data() { return { currentProgress: 75, animationEnabled: true } } } </script> ``` 上述代码片段中的 `props` 可以让父组件传递特定参数给子组件以便更好地控制样式和其他行为特性;而 `data()` 函数则用来初始化内部状态变量如当前进度百分比 (`currentProgress`) 和是否启用动效果(`animationEnabled`)。 #### 性能考量和技术细节 考虑到渲染效率方面的问题,`Vue-Circle-Progress` 插件采用了高效的 SVG 路径算法来进行图形绘制工作,并且尽可能减少了不必要的 DOM 操作次数,从而保证了良好的交互体验和页面加载速度[^2]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值