zoukankan      html  css  js  c++  java
  • react 实现圆环进度条

    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的值即可
  • 相关阅读:
    C++运算符优先级
    UNREFERENCED_PARAMETER
    Eclipse无法查看源码 提示source not found
    JAVAWEB dbutils执行sql命令并遍历结果集时不能查到内容的原因
    JAVAWEB和数据库 Mysql连接不上的原因及解决方案
    电子设备 Kindle如何删除书籍或漫画
    JAVA StringUtils需要导入的包
    JAVAWEB servlet和jsp的权限访问控制
    JAVAWEB servlet验证登录时进行完全的非空判断防止空值登录
    JAVAWEB 遍历mysql结果集时 字段为0、false、null的问题
  • 原文地址:https://www.cnblogs.com/cnlg123/p/12066758.html
Copyright © 2011-2022 走看看