news 2026/7/13 14:24:45

[特殊字符] 基于 Canvas 实现的 Vue 3 高性能刻度尺(标尺)选择器组件。专为身高、体重、温度、年龄等连续数值滑动选择设计,支持物理惯性滑动、磁吸对齐与高度自定义。

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[特殊字符] 基于 Canvas 实现的 Vue 3 高性能刻度尺(标尺)选择器组件。专为身高、体重、温度、年龄等连续数值滑动选择设计,支持物理惯性滑动、磁吸对齐与高度自定义。

vue3-measuring-scale

vue3-measuring-scale是一款为Vue 3开发的高性能、高定制性、交互优雅的Canvas 刻度尺(标尺选择器)组件库。它专为移动端及大屏可视化表单场景设计,可用于身高、体重、温度、年龄等任何连续或离散数值的直观滑动选择。

🔗在线 Demo 演示

✨ 特性

  • Canvas 渲染:核心部分完全由 HTML Canvas 绘制,避免大量 DOM 渲染,即使大范围数值交互也极为流畅。
  • 📱高清显示支持:自动适配高分屏(Retina),智能检测并应用window.devicePixelRatio缩放,避免线条模糊。
  • 🏃物理惯性滑动:内置甩拽减速运动学模型(Momentum Physics),支持随手势甩动滑行。
  • 🧲自动磁吸对齐:当惯性滑动结束或拖拽释放时,会自动回弹并磁吸对齐到最接近的有效步长(step)数值。
  • ⚙️高精度防噪:内置高精度过滤截断机制,彻底根治 JavaScript 浮点数在运算时产生的类似62.30000000000004等浮点噪点。
  • 📐双向布局:支持水平(Horizontal)垂直(Vertical)两套布局朝向。
  • 🌓内置主题与高定制性:支持白昼(light)/ 深色(dark)两套内置配色系统,支持动态调整指针颜色、刻度间距、大刻度间隔,并支持完全自定义的标签文字格式化函数。
  • 🔄支持滚轮/触控板:支持鼠标滚轮与笔记本双指滚动操作。

📦 安装

使用您喜爱的包管理器安装组件包:

# npmnpminstallvue3-measuring-scale# yarnyarnaddvue3-measuring-scale# pnpmpnpmaddvue3-measuring-scale

🚀 快速上手

1. 全局注册使用(作为插件)

main.ts/main.js中注册插件:

import{createApp}from'vue'importAppfrom'./App.vue'// 导入组件包与样式文件importVue3MeasuringScalefrom'vue3-measuring-scale'import'vue3-measuring-scale/dist/style.css'constapp=createApp(App)// 注册插件app.use(Vue3MeasuringScale)app.mount('#app')

全局注册后,您可以在项目任何地方直接使用<MeasuringScale />组件:

<script setup lang="ts"> import { ref } from 'vue' const weight = ref(72.5) </script> <template> <div class="scale-box"> <MeasuringScale v-model="weight" :min="30" :max="150" :step="0.1" unit="kg" /> </div> </template> <style> .scale-box { width: 100%; height: 120px; } </style>

2. 局部导入组件

如果您不需要全局注册,可以直接进行局部按名导入:

<script setup lang="ts"> import { ref } from 'vue' import { MeasuringScale } from 'vue3-measuring-scale' import 'vue3-measuring-scale/dist/style.css' const height = ref(175) </script> <template> <div class="scale-box"> <MeasuringScale v-model="height" :min="100" :max="220" :step="1" unit="cm" :vertical="true" /> </div> </template> <style> .scale-box { width: 200px; height: 400px; } </style>

🔧 API 参考

属性 (Props)

属性名类型默认值说明
v-model(modelValue)number必填双向绑定的当前选中数值。
minnumber0尺子允许的最小值。
maxnumber100尺子允许的最大值。
stepnumber1刻度步长精度(如0.1表示一位小数精度,5表示以 5 递增)。支持浮点数。
ruleWidthnumber8最小相邻刻度线之间的像素间距(单位:px)。增大此值会使尺子显得更稀疏,反之更紧凑。
unitstring""数值显示区域的单位后缀(例如"kg""cm""℃")。
verticalbooleanfalse是否为垂直刻度尺布局。false为水平朝向,true为垂直朝向。
theme'light' | 'dark''light'内置配色主题。light(浅色,适用于白底)和dark(深色,适用于暗色背景)。
pointerColorstring'#3b82f6'中间红色准星指示针的自定义颜色(支持各种 Hex/RGB/HSL 色值)。
lineColorstring""刻度线和水平基线的自定义颜色。为空时会自动根据主题明暗色计算半透明色。
textColorstring""大刻度文本标注的自定义颜色。为空时会自动根据主题计算文字色。
showValuebooleantrue是否在标尺内部上方/侧边自动渲染当前的数值预览框。
tickIntervalnumber10大刻度线间隔。表示每隔多少个step步长,绘制一条带有数值标签的的长刻度线。
labelFormatter(val: number) => stringundefined自定义刻度线下的数值文本格式化函数。可以用来将数值转换成月份、定制文字等。

事件 (Events)

事件名参数说明
update:modelValuevalue: number触发双向绑定更新。在滑动过程中,值会随着当前滑过的步长位置以高精度输出。
changevalue: number用户释放手指且刻度尺执行完磁吸回弹对齐动画并最终静止后触发。参数为最终落点的数值。

🛠️ 本地开发与测试

如果您希望下载该项目并在本地进行二开调试:

  1. 克隆项目并安装依赖

    pnpminstall
  2. 启动本地交互式验证页面

    pnpmrun dev

    启动后可在浏览器中打开http://localhost:5173/访问可视化测试大屏。在此大屏中,您可以调节控制面板中的各项属性并实时预览。

  3. 打包生产包

    pnpmrun build

    该命令会利用 Vite 编译出库的 ES 及 UMD 代码,并自动通过vue-tsc运行类型检查,于dist/生成所有模块的.d.ts类型声明文件。


📄 授权协议

MIT License

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/13 14:20:26

实验七 存储过程:从零到一,掌握数据库业务逻辑封装

1. 存储过程是什么&#xff1f;为什么需要它&#xff1f;第一次接触数据库开发时&#xff0c;我总在Java代码里写满SQL语句。每次统计用户订单都要重复写相同的联表查询&#xff0c;直到同事提醒&#xff1a;"你这代码像复读机啊&#xff01;"后来才知道&#xff0c;…

作者头像 李华
网站建设 2026/7/13 14:19:20

Policy Plus:Windows全版本组策略编辑器终极解决方案

Policy Plus&#xff1a;Windows全版本组策略编辑器终极解决方案 【免费下载链接】PolicyPlus Local Group Policy Editor plus more, for all Windows editions 项目地址: https://gitcode.com/gh_mirrors/po/PolicyPlus 还在为Windows家庭版无法使用组策略编辑器而烦恼…

作者头像 李华
网站建设 2026/7/13 14:19:07

全景相机模型:从统一投影到多视角图像生成

1. 全景相机模型基础&#xff1a;从鱼眼到360度视野第一次接触全景相机时&#xff0c;我被它夸张的球形画面震撼到了——这完全颠覆了传统相机的成像逻辑。普通相机就像从一个小孔看世界&#xff08;针孔模型&#xff09;&#xff0c;而全景相机则像把整个场景"揉"成…

作者头像 李华
网站建设 2026/7/13 14:19:01

混合精度训练实战:从原理到PyTorch与PaddlePaddle实现

1. 混合精度训练的核心原理混合精度训练的本质是在神经网络训练过程中&#xff0c;智能分配计算精度。想象一下&#xff0c;你在记账时&#xff0c;大额支出用精确到元&#xff08;FP32&#xff09;&#xff0c;小额零钱用精确到角&#xff08;FP16&#xff09;&#xff0c;既保…

作者头像 李华