微信小程序实现带刻度简易仪表盘

这篇具有很好参考价值的文章主要介绍了微信小程序实现带刻度简易仪表盘。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、需求:

实现如图样式的仪表盘,要求分数向下取整、进度精确展示。

微信小程序仪表盘,踩坑日记,微信小程序,css3

 二、实现步骤:

1、首先画出环形进度条,通过大圆包小圆的方式实现:大圆(circle1)背景浅色,小圆(circle2)背景白色

2、在小圆内部画刻度,根据UI图确认一共有12个刻度,其中长短刻度交叉显示(如图),

定义一个长度为12的数组(emptyArray: new Array(12))遍历出12个刻度,通过判断索引奇偶分别设置长短刻度,由于仪表盘不是整个环形,就用一个白色背景的盒子盖住下面三个刻度。

刻度实现主要使用css3特性:transform-origin(transform-origin属性表示在对元素进行变换的时候,设置围绕哪个点进行变化的)结合transform: rotate(旋转),通过transform-origin控制中心点位置,计算transform: rotate(旋转)角度实现刻度的效果

微信小程序仪表盘,踩坑日记,微信小程序,css3

3、以上已实现初步表盘的样式,重点是进度条的展示,这时候就用到了神奇的 conic-gradient 圆锥渐变

给它的一些属性根据角度大小动态赋值就能实现进度条的效果

(1)这个地方的判断是由于conic-gradient是从180deg开始的(环形最底部),截掉下半部分后需要重新定位0的位置,根据刻度的划分,0的位置在原来的位置+60,代码写61是因为有一些偏差,同理element > 4 ? element * 0.18 : element * 0.22这个判断也是为了进度条精确展示

微信小程序仪表盘,踩坑日记,微信小程序,css3

 (2)刻度

1:定位到环形最底部是第一个刻度,每个刻度*30定位各个刻度的位置

2:长短刻度

3:头部和尾部部分的进度处理

微信小程序仪表盘,踩坑日记,微信小程序,css3微信小程序仪表盘,踩坑日记,微信小程序,css3

4、中间的指针是自己画的,一个固定在中心的圆,再用伪元素加个三角形指针,通过旋转相应度数来实现,最初的指针指向是正左边,让它指向刻度1的位置,所以每次都-30deg即可实现,根据分子是多少去动态改变指针的指向。微信小程序仪表盘,踩坑日记,微信小程序,css3

5、详细代码如下(element是0<=element<=8的数字,因为分母固定为8):

wxml:

<view class="g-container" style="background: conic-gradient(from 180deg, #FF7E00 0deg, #FF7E00 {{element > 0 && (element < 8 ? ((element * 30) + 61 + ((element > 4 ? element * 0.18 : element * 0.22)) + 'deg') : (element * 30) + 120 + 'deg')}},rgb(255, 126, 0, 0.3) 0deg);">
    <view class="g-content">
        <view wx:for="{{emptyArray}}" wx:key="index" class="g-item" style="transform: rotate({{(index - 6) * 30 + 'deg'}}); height: {{index % 2 != 0 ? '12rpx' : ''}}; background-color: {{element > 0 && (element >= (index - 2)) ? '#FF7E00' : ''}};"></view>
    </view>
    <image src="https://externalimage.1hai.cn/160/227cebe0793b49deba48ad26059d3363.png" class="oil-icon" />
    <view class="oil-pointer">
        <view class="circle" style="transform: rotate({{(element * 30) - 30}}deg);"></view>
    </view>
</view>

 wxss:

.g-container {
  position: relative;
  width: 274rpx;
  height: 274rpx;
  left: 50%;
  /* transform: translate(-50%, 0); */
  margin-left: -137rpx;
  border-radius: 50%;
  background-color: rgb(255, 126, 0, 0.3);
  transform: rotate(-0.7deg);
}

.g-content {
  width: 260rpx;
  height: 260rpx;
  border-radius: 50%;
  background-color: white;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
}

.g-item {
  position: absolute;
  width: 4rpx;
  height: 18rpx;
  background: #FFCB99;
  left: 50%;
  top: 0;
  transform: translate(-50%, -50%);
  transform-origin: 0 131rpx;
  z-index: 3;
  box-sizing: border-box;
}

 文章来源地址https://www.toymoban.com/news/detail-669405.html

到了这里,关于微信小程序实现带刻度简易仪表盘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 纯JS+Vue实现一个仪表盘

    纯JS+Vue实现一个仪表盘

    在使用canvas的时候发现数值变化,每次都要重新渲染,值都从0开始,这和我的需求冲突。 利用 border-radius ,就可将正方形变成圆形 一共100个值,每两个刻度就要有线,到10线的长度会更长一点。其实和画钟表一样,0的位置是坐标轴的225°,到100的位置,总共是180°+45° 静下心

    2024年02月14日
    浏览(14)
  • Qt QGraphicsScene、QGraphicsView类实现仪表盘
  • 第一个实例:QT实现汽车电子仪表盘

    第一个实例:QT实现汽车电子仪表盘

    目录 1.实现效果  1.1.视频演示 1.2.实现效果截图 2.生成的安装程序 3.功能概述 4.具体实现 5.QT扩展介绍 5.1.QT介绍 5.2.QT历史发展 5.3.QT平台支持 5.4.Qt Creator 5.5.优势 5.5.1.优良的跨平台特性 5.5.2.面向对象 5.5.3.丰富的 API QT 实现汽车仪表盘         此程序是个windows下的安装程序

    2024年02月09日
    浏览(8)
  • Qt | 实现一个简单的可以转动的仪表盘

    Qt | 实现一个简单的可以转动的仪表盘

    环境:vs2017+Qt5.14.2 效果图: 准备工作: 效果图中的可以转动的仪表盘效果分为三个部分: 背景图(就是带去掉中间白色原点,去掉中间蓝色指针省下的部分); 指针图片(中间蓝色的指针部分,不包括指针上的白色圆点); 原点图片(中间白色的圆点) 原理: 在paintEv

    2024年02月02日
    浏览(11)
  • 界面控件DevExpress WPF Gauge组件 - 轻松实现个性化商业仪表盘

    界面控件DevExpress WPF Gauge组件 - 轻松实现个性化商业仪表盘

    DevExpress WPF Gauge(仪表)控件包含了多种圆形仪表类型、水平和垂直线性仪表、分段和矩阵数字仪表以及状态指示器,同时还具有最终用户交互性的集成支持。 P.S :DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能

    2024年02月06日
    浏览(11)
  • 如何在CentOS7搭建DashDot服务器仪表盘并实现远程监控

    如何在CentOS7搭建DashDot服务器仪表盘并实现远程监控

    本篇文章我们将使用Docker在本地部署DashDot服务器仪表盘,并且结合cpolar内网穿透工具可以实现公网实时监测服务器系统、处理器、内存、存储、网络、显卡等,并且拥有API接口。 DashDot是一款简单、实用的开源现代服务器仪表盘,主要应用于小型 VPS 和私人服务器(比如说N

    2024年03月16日
    浏览(13)
  • echarts绘制仪表盘

    echarts绘制仪表盘

     代码展示:

    2024年02月13日
    浏览(11)
  • 新版Grafana仪表盘

    新版Grafana仪表盘

    一 Grafana 是什么         Grafana 是一个开源的指标量监测和可视化工具,常用于展示基础设施的时序数据和应用 程序运行分析。         官网指路: https://grafana.com/         与前文相关的两个概念:         1)数据源(Datasource):定义了将用方式来查询数据展

    2024年02月13日
    浏览(9)
  • Grafana增加仪表盘

    Grafana增加仪表盘

    grafana 是一款采用Go语言编写的开源应用,主要用于大规模指标数据的可视化展现,是网络架构和应用分析中最流行的时序数据展示工具,目前已经支持绝大部分常用的时序数据库。 Grafana下载地址:https://grafana.com/grafana/download Grafana仪表盘模板下载地址:https://grafana.com/grafa

    2024年02月04日
    浏览(14)
  • QML 仪表盘小示例

    QML 仪表盘小示例

    本次项目已发布在CSDN-GitCode,下载方便,安全,可在我主页进行下载即可,后面的项目和素材都会发布这个平台。 个人主页:https://gitcode.com/user/m0_45463480 怎么下载:在项目中点击克隆,windows:zip linux:tar.gz tar # .pro

    2024年02月05日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包