首页 > 其他分享 >Progress 圆形进度条 实现

Progress 圆形进度条 实现

时间:2023-09-09 16:02:22浏览次数:50  
标签:颜色 进度条 gradient 50% 圆形 000 progress Progress transparent

效果图

Progress 圆形进度条 实现_前端开发

实现过程分析

简要说明

  • 本文主要以 TypeScript + React 为例进行讲解,demo 中使用到了 sass, 但用法相对简单, 不影响理解

HTML DOM 元素说明

<div className="g-progress-wrap">
    <div className="g-progress"></div>
    <div className="g-circle">
        <span className="g-circle-before"><i/></span>
        <span className="g-circle-after"><i/></span>
    </div>
    <div className="g-text">
        20%
    </div>
</div>
  • g-progress-wrap 包裹 progress, 所有的内容都在这里面
  • g-progress 主要的区域
  • 为了保证圆环有圆角效果 g-circle 内的有 2 个小圆, 放置到圆环的开始和结尾
  • g-text 放置文字区域

上面已经介绍了 html, 因为主要的处理都在css, 所以接下来只说 css

第一步, 实现一个圆

.g-progress {
    width: 100px;
    height: 100px;
    border-radius: 50%;
    background: conic-gradient(#1677ff 0, #1677ff 108deg, #eeeeee 108deg, #eeeeee 360deg);
}

Progress 圆形进度条 实现_免费源码_02

  • border-radius: 50%; 实现圆形
  • 使用 background 实现背景颜色
  • conic-gradient 创建了一个由渐变组成的图像,渐变的颜色变换围绕一个中心点旋转
  • 当角度为 0 - 108deg 时, 颜色为: #1677ff; 当角度为 108deg - 360deg 时, 颜色为: #eeeeee;

第二步, 实现圆环效果

.g-progress {
    /* 新增代码 */
    /* mask: radial-gradient(transparent, transparent 44px, #000 44.5px, #000 100%); */
    -webkit-mask: radial-gradient(transparent, transparent 44px, #000 44.5px, #000 100%);
}

Progress 圆形进度条 实现_前端开发_03

  • 通过使用 mask属性, 隐藏 中间区域的显示
  • radial-gradient 创建一个图像,该图像由从原点辐射的两种或多种颜色之间的渐进过渡组成
  • 当为 0 - 44px 时, 颜色为: transparent; 当为 44px - 100% 时, 颜色为: #000;
  • 设置为 transparent 时, transparent 的区域的颜色会被隐藏
  • 为什么不使用元素覆盖, 使用中间区域的隐藏
  • 如果用元素覆盖实现的话, 如果需要显示父级的背景色时, 没办法实现

第三步, 实现圆环的圆角效果

.g-circle {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    transform: rotate(-90deg);
    &>span {
        position: absolute;
        top: 47px;
        left: 50px;
        width: 50%;
        transform-origin: left;
        &>i {
            width: 3px;
            height: 3px;
            float: right;
            border-radius: 50%;
            background: #1677ff;
            z-index: 1;
        }
    }
    & .g-circle-after {
        transform: rotate(0deg);
    }
}

Progress 圆形进度条 实现_商城源码_04

第四步, 文字效果处理

.g-text {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 16px;
    color: #666666;
}

Progress 圆形进度条 实现_开源项目_05

五步, 进度变化时, 通过js更新

通过行内样式更新 rotate 的方式即可更新进度

学习更多前端开发知识请关注CRMEB开源商城


标签:颜色,进度条,gradient,50%,圆形,000,progress,Progress,transparent
From: https://blog.51cto.com/u_15723831/7419935

相关文章

  • vue2使用 AMap-Vue 高德地图(矩形、圆形、多边形)绘制电子围栏
     AMap-Vue 参考 安装使用|AMap-Vue(gitee.io)main.js引入importAmapVuefrom'@amap/amap-vue';Vue.use(AmapVue);AmapVue.config.key='您申请的key值';AmapVue.config.version='2.0';//默认2.0,这里可以不修改AmapVue.config.plugins=["A......
  • 【愚公系列】2023年09月 WPF控件专题 ProgressBar控件详解
    (文章目录)前言WPF控件是WindowsPresentationFoundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见......
  • 直播源码,自定义progressBar样式
    直播源码,自定义progressBar样式1、layout中xml布局如下: <RelativeLayout  android:layout_height="16dp"  android:layout_width="match_parent">  <ProgressBar    style="?android:attr/progressBarStyleHorizontal"    android......
  • css实现圆形里面感叹号
    .circle-exclamation{width:20px;height:20px;border-radius:50%;display:inline-block;background-color:#eb4d4b;}.circle-exclamation::before{content:"!";font-size:16px;color:#fff;line-height:2......
  • Oracle ORA-01033: ORACLE initialization or shutdown in progress 错误解决办法
    出现原因:主要是我把F盘的数据库文件给删了导致的(这个是我遇到的问题,可能还有其他情况下也会出现这种问题)第一步,运行cmd,输入:sqlplus/assysdba  第二步,输入:startup第三步,输入:shutdownabort第四步,重新输入:startup命令,这时会报如下错误,这种情况主要是我把数据库文件给删了......
  • echarts 进度条实现
    <template><divclass="container"><divid="echart"class="container"></div></div></template><script>exportdefault{data(){return{ti......
  • 打印图形:三角形、圆形和正方形 - Java编程案例
    目录1.打印三角形2.打印圆形3.打印正方形总结简介:本文将介绍如何使用Java编程语言打印出不同的图形,包括三角形、圆形和正方形。我们将使用嵌套循环和基本的数学计算来实现这些图形的打印。1.打印三角形首先,让我们来打印一个简单的三角形。在代码中,我们使用了一个嵌套的循环来控......
  • macOS 战网安装卡进度条 解决
    https://www.blizzard.com/zh-tw/download?platform=macos下载战网安装包安装,却卡进度条在45%强制退出sudorm-rf/Users/Shared/Battle.netrm-rf~/Library/Preferences/com.blizzard*rm-rf~/Library/Preferences/net.battle*sudovi/etc/hosts添加一条 117.5......
  • Arithmetic Progression 题解
    ArithmeticProgression题目大意存在一个打乱了顺序的等差数列\(a\),你可以询问不超过\(60\)次,每次可以以以下两种方式之一进行询问:查询\(a\)中是否有严格大于\(x\)的数。查询\(a_i\)的值。你需要求出这个等差数列的首项和公差。思路分析比较有意思的题。看......
  • svg动画 - 渐变色进度条
      <h1>按w前进按s后退</h1><?xmlversion="1.0"encoding="utf-8"?><svgxmlns="http://www.w3.org/2000/svg"width="400"height="400"viewBox="00400400"><defs><......