react 实现圆环进度条

摘要:
importReact,{useState,useEffect}from"react"import{css}from"emotion"//num是从父级传来的百分比数值exportdefaultfunction({num}){letrightTrnas=css`transform:rotate(0deg);`letleftTrnas=css`transform:rotate(${0}deg);`i
import React, { useState, useEffect } from "react"
import { css } from "emotion"

//num是从父级传来的百分比数值

export default function({ num }) {
let rightTrnas = css`
transform: rotate(0deg);
`
let leftTrnas = css`
transform: rotate(${0}deg);
`
if (num <= 180) {
rightTrnas = css`
transform: rotate(${(Math.round(num * 100) / 100) * 3.6}deg);
`
} else {
rightTrnas = css`
transform: rotate(180deg);
`
leftTrnas = css`
transform: rotate(${(Math.round(num * 100) / 100) * 3.6 - 180}deg);
`
}
return (
<div className={circleCss}>
<div className="circle">
<div className="pie_left">
<div className={`left ${leftTrnas}`}></div>
</div>
<div className="pie_right">
<div className={`right ${rightTrnas}`}></div>
</div>
<div className="mask">
<span>{Math.round(num * 100) / 100}</span>%
</div>
</div>
</div>
)
}
const circleCss = css`
display: flex;
justify-content: center;
align-items: center;
& .circle {
50px;
height: 50px;
position: relative;
border-radius: 50%;
background: #e9e9e9;
}
& .pie_left,
& .pie_right {
50px;
height: 50px;
position: absolute;
top: 0;
left: 0;
}
& .left,
& .right {
50px;
height: 50px;
background: #ff721c;
border-radius: 50%;
position: absolute;
top: 0;
left: 0;
}
& .pie_right,
& .right {
clip: rect(0, auto, auto, 25px);
}
& .pie_left,
& .left {
clip: rect(0, 25px, auto, 0);
}
& .mask {
44px;
height: 44px;
border-radius: 50%;
left: 3px;
top: 3px;
background: #fff;
position: absolute;
text-align: center;
line-height: 44px;
font-size: 12px;
color: #ff721c;
}
`
如果要修改圆环的大小修改宽高和left ,right中的clip: rect的值即可

免责声明:文章转载自《react 实现圆环进度条》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇浅谈CSS中的百分比Win32串行通信中文版(Serial Communications In Win32)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

React和Jquery比较

Jquery的工作方式: 假如你需要给一个按扭添加一个点击事件。 首先根据CSS规则找到对应的dom元素,挂上一个匿名事件处理函数,在事件处理函数中,选中那个需要被修改的DOM元素,读取他的文本值,加以修改,然后修改这个dom元素。 优点:直观易懂。缺点:对于庞大的项目,会造成代码结构复杂,难以维护。 React的工作理念:   打一个比方, Rea...

深入React事件系统(React点击空白部分隐藏弹出层;React阻止事件冒泡失效)

来源:https://www.cnblogs.com/lihuanqing/p/6295685.html 只关注括号内问题的同学,可直接跳转到蓝字部分。(标题起的有点大,其实只讨论一个问题) 两个在React组件上绑定的事件,产生冲突后,使用e.stopPropagation(),阻止冒泡,即可防止事件冲突,毫无问题。 今天是踩了个React事件的坑,需求...

VUE的基本语法

    在学习vue之前,我们应了解一下什么是vue.js?   什么是Vue.js?     Vue.js是目前最后一个前端框架,React是最流行的一个前端框架(react除了开发网站,还可以开发手机App,Vue语法也是可以进行手机App,还需要借助 weex)     Vue.js是前端的主流框架之一,和angular、react.js一起,并成...

通过尾递归避免栈溢出

JavaScript中的递归即函数内调用函数自身,但递归是非常耗内存的,每一次调用都会分配一定的栈空间,达到一定的数量(具体看浏览器)便会溢出报错。 function recursion (num) { if (num === 1) { return 1; } return num + recursion(--num...

React == 实现简易购物车

React == 实现简易版购物车 1、几个要点: 为了方便后面使用input type = "checkbox" 实现复选框的选中/不选中,给传递过来的属性要在遍历的时候,单独加上一个新属性 checked count 属性 默认值 都是1. state = { all : false, sumprice :0, one...

基于颜色和圆对乒乓球识别_20170329

更新:调整算法,识别出一副图像中最近的球。球越近,图像显示的半径越大,所以只要找出图像中半径最大的球就是最近的球。底盘程序优先处理最近的球。 效果:可以准确的找出一副图像中最近的球。 TIP:  flag1:检测到图像中有球的标志位,1有0无。          flag2:检测到图像中球的个数。 代码如下: HoughCircles(canny_o...