前端css实现统计圆环

news2024/10/5 22:16:46

文章目录


效果图
在这里插入图片描述

css的原理
左右两边分开制作,左右两边各有两层盒子,外层负责遮挡溢出的部分,里层旋转表示百分比

template部分

// 圆环的代码
<div class="row rel">
  <div class="left">
    <div id="left" ref="left" class="leftCon" :style="{ backgroundColor: data.color }" />
  </div>
  <div class="right">
    <div id="right" ref="right" class="rightCon" :style="{ backgroundColor: data.color }" />
  </div>
  <div class="circle" />
  <div class="centerCircle">
    {{ data.num }}%
  </div>
</div>

js部分

<script setup>
import { onMounted, ref } from 'vue'

const props = defineProps({
  data: {},
})
const left = ref(null)
const right = ref(null)
onMounted(() => {
  const count = props.data.num
  const totalcount = 100
  left.value.style.transform = `rotate(${getLeftPercent(count, totalcount)}deg)`
  right.value.style.transform = `rotate(${getRightPercent(count, totalcount)}deg)`
})

function getLeftPercent(count, totalcount) {
  if (totalcount === 0 || count === 0 || count / totalcount <= 0.5)
    return -180
  else
    return 180 * (((count / totalcount - 0.5) * 2) - 1)
}
function getRightPercent(count, totalcount) {
  if (totalcount === 0 || count === 0)
    return -180
  else if (count / totalcount >= 0.5)
    return 0
  else
    return 180 * (((count / totalcount) * 2) - 1)
}
</script>

css部分

.left,.right {
    width: 50px;
    height: 100px;
    background: rgb(204, 204, 192);
    overflow: hidden;
}
.left {
    border-radius: 50px 0 0 50px;
}
.right {
    border-radius: 0 50px 50px 0;
}
.rightCon {
    width: 50px;
    height: 100px;
    border-radius: 0 100px 100px 0;
    transform: rotate(-120deg);
    transform-origin: left center;
}
.leftCon {
    width: 50px;
    height: 100px;
    border-radius: 50px 0px 0px 50px;
    transform: rotate(20deg);
    transform-origin: right center;
}
.circle {
    width: 90px;
    height: 90px;
    position: absolute;
    left: 5px;
    top: 5px;
    border-radius: 50%;
    background: rgb(251, 252, 251);
}
.rel {
    position: relative;
}
.row {
    display: flex;
    flex-direction: row;
}
.centerCircle {
  position     : absolute;
  border-radius: 50%;
  width        : 80px;
  height       : 80px;
  transform    : translate(10px, 10px);
  display: flex;
  justify-content: center;
  align-items: center;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1011742.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

U8用友ERP本地部署异地远程访问:内网端口映射外网方案

文章目录 前言1. 服务器本机安装U8并调试设置2. 用友U8借助cpolar实现企业远程办公2.1 在被控端电脑上&#xff0c;点击开始菜单栏&#xff0c;打开设置——系统2.2 找到远程桌面2.3 启用远程桌面 3. 安装cpolar内网穿透3.1 注册cpolar账号3.2 下载cpolar客户端 4. 获取远程桌面…

华为云创新中心黑湖科技:将智能制造进行到底

编辑&#xff1a;阿冒 设计&#xff1a;沐由 一如去年&#xff0c;第二届828 B2B企业节从8月28日-9月15日期间&#xff0c;再一次成为广大企业界关注的焦点。 当前&#xff0c;数字技术已经被广泛被融入到产品、服务与流程当中&#xff0c;用以转变客户的业务成果&#xff0c;以…

Nginx map 实现时间格式转换

哈喽大家好&#xff0c;我是咸鱼 最近我们需要把 Nginx 的日志接入到自研的日志采集平台上&#xff0c;但是这个平台只支持 JSON 格式&#xff0c;所以需要把 Nginx 日志格式改成 JSON 格式 例如下面这样的效果 刚开始在主配置文件 nginx.conf 中定义了一个名叫 json 的日志…

好用的电容笔有哪些推荐?apple pencil的平替笔推荐

很小伙伴会觉得越贵的电容笔就会越好用&#xff0c;但其实不是这样子的。我们要综合产品的性能和价格来购买。在电容笔领域中&#xff0c;性价比是很重要购买参数&#xff0c;今天我给大家推荐几款性价比高的平替电容笔&#xff0c;希望可以给你带来有益的参考。 1.西圣电容笔…

雅思学习总结

#【中秋征文】程序人生&#xff0c;中秋共享# 雅思小科普&#xff1a; 1. 什么是雅思考试&#xff1f; 雅思考试是由&#xff1a;英国文化协会、澳洲 IDP 教育集团、剑桥 大学考试委员会举办的英语水平测试。全称翻译成中文是&#xff1a; 国际英语语言测试系统。 2…

一招识别吞没和Marubozu,只需记住FPmarkets澳福这两点

在后台有很多投资者都在问FPmarkets澳福&#xff0c;吞没和Marubozu这两种形态的区别&#xff0c;今天这篇文章通过相似和不同来了解吞没和Marubozu这两种形态的区别。 共同点&#xff1a; 1. Marubozu和吞没都是烛台分析中的反转形态。 2.这两种模式&#xff0c;阴影都不需要特…

华为云云耀云服务器L实例评测-搭建基于hexo的个人博客

1、演示 访问地址&#xff1a;演示传送门开头先来一个效果图。 2、准备服务器 前面有介绍了一下华为云云耀云服务器L实例评测以及简单的配置用法&#xff0c;具体可以看上篇的博客。https://blog.csdn.net/yongqing_/article/details/132867889我这里用的是华为云云耀云服务器…

OpenAPI,连接新世界_三叠云

开放平台 路径 应用与导航 >> 开放平台 功能简介 随着企业数字化转型的不断深入&#xff0c;越来越多的公司需要与其他企业或应用程序进行集成&#xff0c;实现更高效和智能的业务流程。因此&#xff0c;三叠云提出了一种新的解决方案&#xff1a;开放平台。 三叠云…

OpenHarmony 系统能力 SystemCapability 使用指南

一、概述 1、系统能力与 API SysCap&#xff0c;全称 SystemCapability&#xff0c;即系统能力&#xff0c;指操作系统中每一个相对独立的特性&#xff0c;如蓝牙&#xff0c;WIFI&#xff0c;NFC&#xff0c;摄像头等&#xff0c;都是系统能力之一。每个系统能力对应多个 API&…

Python模板注入(SSTI)

概念 发生在使用模板引擎解析用户提供的输入时。模板注入漏洞可能导致攻击者能够执行恶意代码或访问未授权的数据。 模板引擎可以让&#xff08;网站&#xff09;程序实现界面与数据分离&#xff0c;业务代码与逻辑代码分离。即也拓宽了攻击面&#xff0c;注入到模板中的代码可…

flutter聊天界面-TextField输入框实现@功能等匹配正则表达式展示高亮功能

flutter聊天界面-TextField输入框实现功能等匹配正则表达式展示高亮功能 一、简要描述 描述&#xff1a; 最近有位朋友讨论的时候&#xff0c;提到了输入框的高亮展示。在flutter TextField中需要插入特殊样式的标签&#xff0c;比如&#xff1a;“请 张三 回答一下”&#x…

streamlit打包方式

Streamlit是一个开放的资源框架&#xff0c;用于将数据脚本转换为可共享的 Web 应用程序。它允许数据科学家和机器学习工程师构建直观的界面&#xff0c;而无需了解 Web 开发。在本教程中&#xff0c;我们将学习一些将 Streamlit 应用程序转换为双击可执行文件的方法&#xff0…

贪心(5)

绝对值不等式 |x-a||x-b|>|a-b| (中位数&#xff09; 仓库选址&#xff08;中位数就是最优解&#xff09; 在一条数轴上有 N 家商店&#xff0c;它们的坐标分别为 A1∼AN。 现在需要在数轴上建立一家货仓&#xff0c;每天清晨&#xff0c;从货仓到每家商店都要运送一车商…

山区自建房BCD浪涌保护器接线方案(自建房用电防雷)

家庭&#xff08;自建房&#xff09;电路防雷保护指南 家庭&#xff08;自建房&#xff09;电路防雷保护指南.png 已共享。 链接: https://pan.baidu.com/s/1xkwsIgizg4WvLJ8V3cd_ZQ?pwde9pv 提取码: e9pv 山区自建房BCD浪涌保护器接线方案。

小土堆pytorch学习笔记

想入门pytorch强化学习&#xff0c;就去找pytorch的课来看。B站上播放量最高的就是小土堆的课&#xff0c;整体跟下来感觉内容还是很详细的&#xff0c;但和我的预期不太一样&#xff0c;这个是DL的不是RL的&#xff0c;不过作为对于pytorch使用的初期了解也是很好的&#xff0…

【Linux网络编程】Socket-TCP实例

netstat -nltp 无法用read函数读取UDP套接字的数据&#xff0c;因为UDP是面向数据报&#xff0c;而TCP是面向数据流。 客户端不需要 bind&#xff0c;listen&#xff0c;accept&#xff0c;但是客户端需要connect&#xff0c;connect会自动做bind工作。 #include <sys/sock…

前端开发工作中可能会遇到的问题及解决方法

一、uni-app小程序中xxx代码依赖分析忽略二、uni-app弹窗列表滚动, 弹框下面的内容也跟随滚动三、uni-app小程序正常自定义组件不生效 四、uni-app popup 弹出层底部空隙问题 五、uni-app小程序自定义导航栏后iOS页面可上下滑动问题解决方案 六. uni-app中的分享二维码以及…

5个关键步骤助您顺利开发跑腿小程序

作为跑腿服务的热门方式&#xff0c;跑腿小程序的开发成为了许多创业者和企业的首选。然而&#xff0c;要成功开发一款出色的跑腿小程序&#xff0c;并不是一件轻松的事情。本文将为您揭示5个关键步骤&#xff0c;助您在开发跑腿小程序的道路上顺利前行。 步骤一&#xff1a;需…

java项目之固定资产管理系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的固定资产管理系统。源码和部署相关看文章末尾&#xff01; 开发环境&#xff1a; 后端&#xff1a; 开发语言&#xff1a;Java 框架&…

Games101作业7 蒙特卡洛路径追踪

文章目录 基本思想基本代码问题1:我们采取每次弹射都弹射N跟光线&#xff0c;此时会发生指数爆炸问题2:这是一个递归的过程&#xff0c;递归的终止条件我们还没规定优化&#xff0c;对光源直接进行采样 本文不涉及:蒙特卡洛积分的原理以及渲染方程是如何推到出来&#xff0c;而…