更新记录

1.0.0(2026-09-08) 下载此版本

  1. 首次发布:双色比例进度条组件(A/B 两段占比自动补足)
  2. 斜切分隔线可开关,斜切延展量与缝隙宽度可调(slant / slantTopExtend / slantBottomExtend / slantGap)
  3. 文案配置灵活:标签可隐藏、可自定义(labelA / labelB)、百分比精度(precision)、去零(trimZero)、后缀(percentSuffix)、标签颜色/字号/字重/间距均可配
  4. 轨道样式可配:高度、圆角、底色;数值过渡动画可开关、时长可调
  5. 提供 labelA / labelB 具名插槽,支持完全自定义标签内容

平台兼容性

uni-app(5.24)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
-
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟

其他

多语言 暗黑模式 宽屏模式
×

Line Progress 双色比例进度条

一款基于 uni-app(Vue3)的双色比例进度条组件。用于展示两段占比(如买卖比例、盈亏比例),A/B 两段占比自动补足为 100%,支持斜切分隔、自定义文案与轨道样式,开箱即用。

🚀 功能特性

  • A/B 双段占比:只需传 valueA,B 侧自动补足为 100 - valueA
  • 斜切分隔可配置:分隔线可开关(slant),斜切角度(延展量)与缝隙宽度均可调
  • 文案灵活(国际化友好):左右标签可隐藏/自定义、百分比精度/去零/后缀可调、标签颜色字号字重间距可配
  • 轨道样式可配:轨道高度、圆角、底色均可配置
  • 数值动画:占比变化时平滑过渡,可开关、可调速
  • 自定义插槽:提供 labelA / labelB 具名插槽,可完全自定义标签内容
  • 平滑替换valueA / colorA / colorB 用法与原 m-line-progress 完全一致,可直接替换使用
  • 多端适配:纯 view/text + clip-path 实现,适配 H5 / App-vue / 小程序

📦 安装引入

  1. uni_modules/line-progress 整个目录复制到项目的 uni_modules 目录下;
  2. 开启 easycom 时可直接使用 <line-progress> 标签,无需手动引入;
  3. 若未开启 easycom,可在页面中手动引入:
<script setup>
import LineProgress from "@/uni_modules/line-progress/components/line-progress/line-progress.vue";
</script>

🚀 快速开始

<template>
  <view>
    <!-- 基础用法:仅展示比例条(默认不显示左右标签) -->
    <line-progress :value-a="60" />

    <!-- 进阶用法:自定义颜色 / 文案 / 样式(需要展示标签时加 show-label) -->
    <line-progress
      :value-a="33.333"
      :precision="2"
      trim-zero
      show-label
      label-a="盈利"
      label-b="亏损"
      color-a="#F5465D"
      color-b="#29CA8B"
      height="16rpx"
      :slant="false"
    />
  </view>
</template>

🔧 Props 属性配置

数据

属性名 类型 默认值 说明
valueA Number 0 A 侧占比(0~100,超出按 0~100 钳制),B 侧自动补足
precision Number 2 百分比文案保留的小数位数(仅影响展示,不影响轨道精确值)
trimZero Boolean true 是否去除小数末尾多余的 0(如 60.00 显示为 60

颜色

属性名 类型 默认值 说明
colorA String #F5465D A 侧颜色
colorB String #29CA8B B 侧颜色

标签

属性名 类型 默认值 说明
showLabel Boolean false 是否显示左右标签
labelA String "" A 侧自定义文案,传入后不再自动拼接百分比
labelB String "" B 侧自定义文案,传入后不再自动拼接百分比
percentSuffix String % 自动生成的百分比文案后缀(如改为空字符串可去掉 %
labelColorA String "" A 侧标签颜色,不传默认跟随 colorA
labelColorB String "" B 侧标签颜色,不传默认跟随 colorB
labelFontSize String 22rpx 标签字号
labelFontWeight String/Number 400 标签字重
labelFontFamily String "" 标签字体族,默认继承主题字体
labelSpace String 24rpx 标签与轨道之间的间距

轨道

属性名 类型 默认值 说明
height String 8rpx 轨道高度(支持 rpx/px 等任意长度单位)
radius String 999rpx 轨道圆角(默认胶囊形)
trackColor String #F6F7F9 轨道底色(斜切缝隙处可见)

分隔线

属性名 类型 默认值 说明
slant Boolean true 是否使用斜切分隔,false 时为垂直直角分隔
slantTopExtend Number 2 斜切顶部延展量(%)
slantBottomExtend Number 1.5 斜切底部延展量(%)
slantGap Number 1.8 斜切缝隙宽度(%)

动画

属性名 类型 默认值 说明
animated Boolean true 占比变化时是否启用过渡动画
animateDuration Number 0.6 过渡动画时长(秒)

🎨 插槽

插槽名 说明
labelA A 侧标签内容,插槽为空时展示默认百分比文案
labelB B 侧标签内容,插槽为空时展示默认百分比文案
<line-progress :value-a="60">
  <!-- 完全自定义标签内容(颜色/字号等跟随 labelColorA/labelColorB 与 labelFontSize 配置) -->
  <template #labelA>
    <text class="custom-a">买 60%</text>
  </template>
</line-progress>

注意:插槽只替换文字内容,标签的颜色 / 字号 / 字重 / 间距仍由 labelColorAlabelFontSize 等 props 控制。

🎨 样式自定义

组件内部类可在外部覆盖(scoped 样式需 :deep() 穿透):

类名 说明
.lp-progress 组件整体(flex 行布局:左标签 + 轨道 + 右标签)
.lp-label 左右标签文字
.lp-track 轨道(底色 / 圆角容器)
.lp-seg 轨道内色块(A/B 两段通用)
.lp-seg-a A 侧色块
.lp-seg-b B 侧色块
<style lang="scss" scoped>
:deep(.lp-track) {
  border: 1px solid #eee;
}
</style>

⚠️ 使用注意事项

  1. 文案拼接:自动文案 = 格式化后的数值 + percentSuffix;传入 labelA / labelB 后不再自动拼接后缀
  2. 数值钳制valueA 会被钳制在 0~100,超出部分不参与占比计算(如传 120 会按 100 渲染)
  3. 平台兼容:斜切分隔依赖 clip-path,H5 / App-vue 表现最佳,小程序端请按实际目标平台验证;nvue 不支持,请在 app-vue 中使用
  4. 避免与组件标签同名:页面(<script setup>)内不要定义与标签同名的局部变量或函数(如 lineProgress),否则 Vue 编译时局部变量优先于 easycom 组件,<line-progress> 会被解析成该局部变量而非组件。请使用 openVerifyrenderProgress 等不与标签冲突的命名
  5. 实时数据valueA 变化时色块与文案会自动更新并平滑过渡,可直接绑定 ws/轮询的实时占比数据

📞 更新日志

v1.0.0(2026-09-08)

  • 🎉 首个版本发布:双段占比自动补足、斜切分隔可调、标签/文案灵活配置、轨道样式可配、数值动画可配、自定义插槽

祝您使用愉快! 🎉

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。