整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

uniapp纯CSS实现圆形进度条组件

niapp纯CSS实现圆形进度条组件。圆形进度条组件组合做一个步骤进度组件是非常常见。

纯 CSS 实现圆形进度条组件有以下几个好处:

轻量级:由于纯 CSS 实现,无需额外的 JavaScript 或图像资源,所以组件的文件大小相对较小,加载速度快,对页面性能的影响较小。

兼容性好:CSS 是 Web 标准的一部分,几乎所有现代浏览器都支持 CSS。因此,纯 CSS 实现的圆形进度条组件在各种设备和浏览器上都能正常显示和运行。

可定制性强:CSS 提供了丰富的样式属性和选择器,可以灵活地自定义圆形进度条的样式、颜色、大小、动画效果等,以满足不同项目和设计需求。

简单易用:纯 CSS 实现的圆形进度条组件通常使用简单,只需要在 HTML 中添加相应的 CSS 类或样式即可,无需复杂的配置或调用 JavaScript 函数。

性能优化:由于纯 CSS 实现的圆形进度条不涉及 JavaScript 的计算和操作,可以减轻客户端的计算负担,提高页面的响应速度和性能。



<template>

<view class="flex align-center diygw-col-24 justify-center">

<view class="progress-circle " :class="'progress-'+innerPercent" :style="{

'--not-progress-color':notProgressColor,

'--bg-color':bgColor,

'--color':color,

'--progress-color':progressColor,

'--width':$u.addUnit(width),

'--font-size':$u.addUnit(fontSize),

'--border-width':$u.addUnit(borderWidth)

}">

<view class="inner">

<view class="progress-number">{{innerPercent}}%</view>

</view>

</view>

</view>

</template>

<script>

export default {

props: {

width: {

type: Number,

default: 100

},

borderWidth: {

type: Number,

default: 20

},

bgColor: {

type: String,

default: '#fff'

},

notProgressColor: {

type: String,

default: '#ddd'

},

progressColor: {

type: String,

default: '#07c160'

},

color:{

type: String,

default: '#07c160'

},

fontSize:{

type: Number,

default: 24

},

/**

* 进度(0-100)

*/

percent: {

type: Number,

default: 0

},

/**

* 是否动画

*/

animate: {

type: Boolean,

default: true

},

/**

* 动画速率

*/

rate: {

type: Number,

default: 5

}

},

computed: {

/**

* @private

*/

complete() {

return this.innerPercent == 100

}

},

watch: {

percent(percent) {

this.setPercent()

}

},

data() {

return {

innerPercent: 0,

timeout: null

}

},

mounted() {

this.setPercent()

},

methods: {

setPercent() {

if (this.animate) {

this.stepTo(true)

} else {

this.innerPercent = this.percent

}

},

clearTimeout() {

clearTimeout(this.timeout)

Object.assign(this, {

timeout: null

})

},

stepTo(topFrame = false) {

if (topFrame) {

this.clearTimeout()

}

if (this.percent > this.innerPercent && !this.complete) {

this.innerPercent=this.innerPercent+1

}

if (this.percent < this.innerPercent && this.innerPercent > 0) {

this.innerPercent--

}

if (this.innerPercent !== this.percent) {

this.timeout = setTimeout(() => {

this.stepTo()

}, this.rate)

}

}

}

}

</script>

<style lang="scss" scoped>

.progress-circle {

--progress-color:#63B8FF;

--not-progress-color:#ddd;

--bg-color:#fff;

--width: 240rpx;

--border-width: 10rpx;

--color:#777;

--font-size:1.5rem;


$diythemeColor:var(--progress-color) ;

$diybackColor: var(--not-progress-color) ;

position: relative;

display: flex;

align-items: center;

justify-content: center;

width: var(--width);

height: var(--width);

border-radius: 50%;

transition: transform 1s;

background-color: $diybackColor;

padding:var(--border-width);


.inner{

width:100%;

height: 100%;

display: flex;

align-items: center;

justify-content: center;

border-radius: 50%;

z-index:1;

background-color: var(--bg-color);

}

&:before {

content: '';

left:0;

top:0;

position: absolute;

width: 100%;

height: 100%;

border-radius: 50%;

background-color: $diythemeColor;

}


$step: 1;

$loops: 99;

$increment: 3.6;

$half: 50;


@for $i from 0 through $loops {

&.progress-#{$i * $step}:before {

@if $i < $half {

$nextDeg: 90deg+($increment * $i);

background-image: linear-gradient(90deg, $diybackColor 50%, transparent 50%, transparent), linear-gradient($nextDeg, $diythemeColor 50%, $diybackColor 50%, $diybackColor);

}

@else {

$nextDeg: -90deg+($increment * ($i - $half));

background-image: linear-gradient($nextDeg, $diythemeColor 50%, transparent 50%, transparent), linear-gradient(270deg, $diythemeColor 50%, $diybackColor 50%, $diybackColor);

}

}

}


.progress-number {

width: 100%;

line-height: 1;

text-align: center;

font-size: var(--font-size);

color: var(--color);

}

}

</style>

绍:

腾讯游戏盒子是由腾讯自主研发的一款专为网页游戏用户定制的网页游戏辅助工具,具有智能加速、防掉线、帐号多开、全屏等特点。

腾讯游戏盒子官网页面也非常简单明了,这也是目前很多简单介绍型网站所采用的风格。页面下半部分的圆形图标使用了 CSS3 transform 旋转属性,当鼠标移动到上面时会顺时针旋转 20 度,但 IE6 – IE9 不支持该属性,所以没有效果。

演示地址:

https://www.361zy.com/demo/379/

下载地址:

https://cloud.06dn.com/s/qR9SW

解压码:

LSr69TPA

端大佬们,你们会怎么去实现呢?

用css画出一个圆圈,里面有个叉号(不是字母x),你会怎么实现?

哈喽家人们,这是我今天去面试的一道笔试题。看到这个题目我第一时间想到的是用伪元素来实现,可握起笔我的手和脑子好像失联了,不知道如何下笔,写不出来!完蛋了,凉了!在这大环境下好不容易得来的面试机会,只能怪自己没好好准备。

没关系,还有面试!还有希望,先安慰一下自己,说不定背的八股文在面试的时候派上用场了!主打就是一个心态乐观,面试重在参与!面试结束了,run回家了,死心了,真就是重在参与了。问的一个没背,答得乱七八糟!

拜拜了家人们,今天也是陪跑的一天。