#前端#Vue追加样式,实现动态进度条/仪表盘

news/2024/7/20 3:06:47 标签: vue.js, css, 小程序, 前端, tokenization

一、需求:

在开发中,我们时常会遇到一些需要动态获取数据在页面的变化

二、思路:

2.1直接展示效果

  • 追加样式:距离左边、右边的距离(纯数据直接展示)(原生样式)

(1)确定追加的样式,

使用 :style="{'css值':接口数据字段+'%'}"

(看需求是需要向左,或者向右再决定,是用left / right,或者magin-left / magin-right)

(2)根据进度条确定区间,再看字段的数值,进行加减乘除

示例:

<view :style="{ 'margin-left': item.role + '%' }">{{item.role}</view>

//这样就代表当item.role(后端字段) 的数值变化时,会追加一个与左边距离多少的样式

动态修改:

如上图的效果图,我们可以看出“需要加强到优秀”这个进度条分为4段,

那么我们只需要设置区间,再将我们拿到数据加到里面就可以了,达到追加样式的效果

示例代码:

<!-- 力量 -->
	<view class="test-bubble">
		<view class="bubble" :style="'margin-left:'+TNList.llNum*4+'%;'">
			<image :src="baseUrl + '/profile/upload/2021/10/30/chat.png'"></image>
			<view class="num">{{TNList.llNum}}</view>
		</view>
	</view>
<!-- 耐力 -->
	<view class="test-bubble">
		<view class="bubble" :style="'margin-left:'+TNList.nlNum*10+'%;'">
			<image :src="baseUrl + '/profile/upload/2021/10/30/chat.png'"></image>
			<view class="num">{{TNList.nlNum}}</view>
		</view>
    </view>

//根据后端返回的字段,进行加减乘除,进行计算

2.2区间效果

(1)通过v-if,追加样式(原生组件)

根据区间,通过v-if来进行显示及隐藏内容会涉及到>= 的写法

这个相比于第一种效果来说,就深了一层,需要判断各个区间的取值

案例如下:

区间为:

(xx:代表我们拿到的数值)

-20<xx<=-6  

-6<xx<=3

3<xx<=9

那么我们就可以将他们分为3段,如果返回的数值在这些区间里面,就追加样式,

:style="'margin-left:10%;'"

:style="'margin-left:60%;'"

:style="'margin-left:80%;'"

示例代码:

<view >
    <view class="bubble" 
        v-if="TZList.bmr > -20 && TZList.bmr <= -6 ":style="'margin-left:10%;'">
		<image :src="baseUrl + '/profile/upload/2021/10/30/chat.png'"></image>
		<view class="num">{{TZList.bmr}}</view>
    </view>
	<view class="bubble" v-if="TZList.bmr > -6 && TZList.bmr <= 3 ":style="'margin-left:60%;'">
	    <image :src="baseUrl + '/profile/upload/2021/10/30/chat.png'"></image>
		<view class="num">{{TZList.bmr}}</view>
    </view>
	<view class="bubble" v-if="TZList.bmr > 3 && TZList.bmr < 9 ":style="'margin-left:80%;'">
		<image :src="baseUrl + '/profile/upload/2021/10/30/chat.png'"></image>
	    <view class="num">{{TZList.bmr}}</view>
	</view>
</view>

2.3使用插件赋值

使用插件,只需要找到控制动态修改样式的参数,进行赋值,也需要注意取整

案例:仪表盘插件

只需要将返回的数值*33.3填入,就可以动态控制:percent="",这个参数值了

<view class="user-test">
				<view class="line">
					<!-- //体态仪表盘 -->
					<cmd-progress type="dashboard" :percent="parseInt(roleAssessmentLevel)*33.3" stroke-color="#ED6636"
						width="160" gap-degree="140" class="tt-item" :show-info="false" stroke-width="6"></cmd-progress>
					<!-- //体质仪表盘 -->
					<cmd-progress type="dashboard" :percent="parseInt(bmiGrade)*25" stroke-color="#18B566" width="140"
						gap-degree="155" class="tz-item" :show-info="false" stroke-width="6"></cmd-progress>
					<!-- //体能仪表盘 -->
					<cmd-progress type="dashboard" :percent="parseInt(assessmentLevel)*33" stroke-color="#007AFF"
						width="120" gap-degree="170" class="tn-item" :show-info="false" stroke-width="6"></cmd-progress>
				</view>
				<view class="test-num">
					<view>体态状况:{{ roleAssessmentValue}}</view>
					<view>体质状况:{{ bmiL }}</view>
					<view>体能状况:{{ assessmentValue }}</view>
				</view>
				
			</view>

更多效果:

 


http://www.niftyadmin.cn/n/615196.html

相关文章

#vue#实现浏览器全屏可视化(进入、退出全屏)附源码

需求&#xff1a; 点击按钮&#xff0c;实现全屏&#xff0c;再次点击&#xff0c;退出全屏 效果如下&#xff1a; &#xff08;1&#xff09;原页面&#xff1a; &#xff08;2&#xff09;点击全屏按钮后的页面&#xff08;已进入全屏模式&#xff09; ​​​​​​​ &…

选择排序精简理解

原理&#xff1a;遍历数组&#xff0c;从第一个开始&#xff0c;将其与剩余的元素进行比较&#xff0c;记录最小的元素及其所在的位置&#xff0c;结束后&#xff0c;将其与应该放到的位置上的元素对调&#xff0c;直到完成排序。 借用网上的动图直观的看下&#xff1a; 思想&a…

#vue# css样式穿透::v-deep的具体使用

一、需求&#xff1a; 使用element-ui等一些第三方组件库时&#xff0c; 由于实际项目的差异性&#xff0c;往往需要修改element-ui的css样式&#xff0c; 这个时候就需要我们单独针对该页面进行修改样式。 二、方法&#xff1a; 使用::v-deep样式穿透进行修改即可 三、步骤…

#微信小程序# 在小程序里面退出退出小程序(navigator以及API--wx.exitMiniProgram)

需求&#xff1a; 在微信小程序里面&#xff0c;点击“取消”字样即可退出小程序&#xff0c;返回微信聊天界面 效果&#xff1a; 步骤&#xff1a; 方法一&#xff1a; 直接使用uni-app的组件——navigator&#xff0c;修改参数open-type"exit" target"min…

ZOJ 4064

原题链接 题意 给定1个长度为n的序列&#xff0c;该序列只含\(0/1/2\)。 你可以进行如下操作&#xff1a;选中不含1的连续区间\([l,r]\)&#xff0c;令区间内所有2变为0。 恰好进行m次操作&#xff0c;令所有2变为0。求共有多少种不同的操作序列。 \(1 \leq n\leq 100,1\leq m\…

#VUE#element 日期选择器 date-picker 默认当月1号到当天

需求&#xff1a; 一进入页面就显示当月1号到当天的日期 &#xff08;以及快捷选择最近一周及最近一个月&#xff09; 效果&#xff1a; 思路/步骤&#xff1a; 1、使用element的DatePicker 日期选择器 <template><div><el-date-pickerv-model"value2&…

AMD与CMD的区别

定义&#xff1a;异步模块定义&#xff08;AMD&#xff09;是Asynchronous Module Definition的缩写&#xff0c;是 RequireJS 在推广过程中对模块定义的规范化产出。通用模块定义&#xff08;CMD&#xff09;是Common Module Definition的缩写&#xff0c;是SeaJS 在推广过程中…

#JavaScript# 系统知识之基础总结---思维导图

JavaScript知识总结&#xff08;不包含 DOM以及window&#xff09;