uni-app:实现页面效果3

news2024/12/24 8:44:26

效果

代码

<template>
	<view>
		<!-- 风速风向检测器-->
		<view class="content_position">
			<view class="content">
				<view class="SN">
					<view class="SN_title">设备1</view>
					<view class="SN_input">
						SN:
						<input type="text">
					</view>
				</view>
				<view class="line1">
					<view class="line1_item3">
						<view class="item3_top">
							<view class="item3_top_title_position">
								<view class="wind_img">
									<image :src="wind" mode="" class="rotate-image" :style="rotateStyle"></image>
								</view>
							</view>
							<view class="item3_top_canvas_position">
								<canvas style="width:100%; height: 20px;" canvas-id="firstCanvas"
									id="firstCanvas"></canvas>
							</view>
							<view class="item3_top_text_position">
								<view class="top_text1">
									<view>
										<view class="text_center">风速</view>
										<view class="circle">
											<view>
												<view class="text_center">
													<text>{{rotationSpeed}}</text>M/S
												</view>
											</view>
										</view>
									</view>
								</view>
							</view>
						</view>
						<view class="item3_bottom">
							<view class="line1_item3_block2">
								<view class="block2">
									<view class="title">
										风速信号输入
									</view>
									<view class="green_ring_select">
										<view>AI3</view>
										<view>
											<image :src="down" mode=""></image>
										</view>
									</view>
									<view class="block2_input">
										<view class="block2_input_title">
											量程
										</view>
										<view class="block2_input_data">
											<view class="input_data">
												<input type="text" value="0M/S">
											</view>
											<view class="input_data">
												<input type="text" value="40M/S">
											</view>
										</view>
									</view>
								</view>
							</view>
							<view class="line1_item3_block2">
								<view class="block2">
									<view class="title">
										CO信号输入
									</view>
									<view class="green_ring_select">
										<view>AI4</view>
										<view>
											<image :src="down" mode=""></image>
										</view>
									</view>
									<view class="block2_input">
										<view class="block2_input_data1">
											<view class="input_data">
												<view class="input_data_title">0°</view>
												<input type="text" value="4mA">
											</view>
											<view class="input_data">
												<view class="input_data_title">180°</view>
												<input type="text" value="12mA">
											</view>
										</view>
									</view>
								</view>
							</view>
						</view>
					</view>
				</view>

			</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				wind: getApp().globalData.icon + 'look/wind.png',
				down: getApp().globalData.icon + 'look/down.png',
				rotationSpeed: 1, // 自定义的旋转速度,数值越大转的越快
			}
		},
		onReady: function(e) {
			//创建一个画布上下文对象,用于进行绘图操作。'firstCanvas'是一个指定的画布标识符,表示在页面上的哪个 <canvas> 元素上进行绘制。
			var context = uni.createCanvasContext('firstCanvas')
			var width = '';
			const query = uni.createSelectorQuery();
			//获取宽度
			query.select('#firstCanvas').fields({
				size: true
			}, (res) => {
				width = res.width;
			}).exec();

			//绘制路径中的线条。
			context.setStrokeStyle("#aaaaff")
			// 设置线条的宽度为2个像素。
			context.setLineWidth(2)
			// 绘制横线
			context.beginPath(); // 开始路径绘制
			context.moveTo(width / 2, 0); // 将起点移动到 (0, 100)
			context.lineTo(width / 2, 20);
			context.stroke(); // 绘制线条
			// 将之前的绘图操作渲染到画布上。
			context.draw()
		},
		computed: {
			rotateStyle() {
				const duration = 1 / this.rotationSpeed + "s"; // 根据旋转速度计算动画持续时间
				return {
					animationDuration: duration
				};
			}
		},
		methods: {}
	}
</script>

<style lang="scss">
	page {
		background-color: #f3f4f6;
	}

	/* 总体样式 */
	.content_position {
		width: 100%;
		display: flex;
		align-items: center;
		justify-content: center;
	}

	.content {
		width: 90%;
		padding: 2% 0;

	}

	/* SN 样式 */
	.SN {
		color: #6b6c6e;
		padding: 2%;
		display: flex;
		// border:1px solid black;
		justify-content: space-between;

		/* 将左右视图分散对齐 */
		.SN_input {
			display: flex;

			// border:1px solid black;
			input {
				border-bottom: 1px solid #a3a4a6;
				width: 200rpx;
			}

			image {
				width: 48rpx;
				height: 48rpx;
			}
		}
	}

	// 行1样式
	.line1 {
		// border: 1px solid black;
		background-color: #fff;
		border-radius: 15px;
		margin: 5% 0;
		padding: 3% 5%;
	}

	.line1_item3 {
		// border: 1px solid black;
		margin-top: 5%;
	}

	.wind_img {
		// border: 1px solid black;
		background-color: #edf1fc;
		width: 150rpx;
		height: 150rpx;
		display: flex;
		align-items: center;
		justify-content: center;
		border-radius: 50%;

		image {
			width: 90rpx;
			height: 90rpx;
		}
	}

	.text_center {
		display: flex;
		align-items: center;
		justify-content: center;
	}

	//圆环图标
	.item3_top_title_position {
		display: flex;
		align-items: center;
		justify-content: center;
		// border: 1px solid black;
	}

	//画布位置
	.item3_top_canvas_position {
		display: flex;
		align-items: center;
		justify-content: center;
	}

	//文本位置
	.item3_top_text_position {
		position: relative;
		height: 400rpx;
	}

	//圆环
	.circle {
		margin-top: 20%;
		width: 140rpx;
		height: 140rpx;
		border-radius: 50%;
		font-size: 95%;
		display: flex;
		align-items: center;
		justify-content: center;
		background-color: #e8e8e8;
	}

	.top_text1 {
		position: absolute;
		left: 50%;
		transform: translateX(-50%);
		// border: 1px solid black;
		width: 220rpx;
		height: 300rpx;
		background-color: #edf1fc;
		border-radius: 10px;
		display: flex;
		align-items: center;
		justify-content: center;
	}

	// 底部样式
	.item3_bottom {
		display: flex;
		justify-content: space-between; //分散排列
		// border: 1px solid black;
	}

	//两列
	.line1_item3_block2 {
		display: flex;
		text-align: center;
		margin: 0 5%; //增加底部两个模块之间的距离
	}

	//两个小块样式
	.block2_input {
		display: flex;
		width: 100%;
	}

	// 底部两小块标题
	.block2_input_title {
		// border: 1px solid black;
		display: flex;
		align-items: center; //竖直居中
		justify-content: center; //水平居中
	}

	// .input_data_title{
	// 	margin-right: 5%;
	// }
	.block2_input_data {
		width: 70%;
	}

	.block2_input_data1 {
		width: 100%;
	}

	.block2_input_data1 input {
		margin: 5rpx 0;
		border: 1px solid #808080;
		border-radius: 20px;
		padding: 2% 5%;
		color: #737373;
		text-align: right;
	}

	.input_data {
		display: flex;
		align-items: center;
		height: 80rpx;
		// border: 1px solid black;
	}

	.block2_input_data input {
		margin: 5rpx 0;
		border: 1px solid #808080;
		border-radius: 20px;
		padding: 2% 5%;
		color: #737373;
		text-align: right;

	}

	//绿环样式
	.green_ring_select {
		background-color: #6da54f;
		border-radius: 20px;
		color: #fff;
		font-size: 95%;
		display: flex;
		align-items: center;
		padding: 3% 0;
		margin: 5% 0;

		// width:200rpx;
		view:nth-child(1) {
			width: 60%;
			display: flex;
			justify-content: center;
			align-items: center;
		}

		view:nth-child(2) {
			width: 40%;
			display: flex;
			justify-content: center;
			align-items: center;

			image {
				width: 30rpx;
				height: 30rpx;
			}
		}
	}

	// 旋转风扇
	.rotate-image {
		animation: rotateAnimation linear infinite;
		transform-origin: center center;
		transform: translate3d(0, 0, 0);
	}

	@keyframes rotateAnimation {
		from {
			transform: rotate(0deg);
		}

		to {
			transform: rotate(360deg);
		}
	}
</style>

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

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

相关文章

Git_04_撤销工作区的修改

> git restore 文件路径&#xff0b;文件名称1.查看工作区的变动 2.撤回工作区的修改

kafka-consumer-groups.sh消费者组管理

1.查看消费者列表 --list bin/kafka-consumer-groups.sh --bootstrap-server hadoop102:9092,hadoop103:9092,hadoop104:9092 --list先调用MetadataRequest拿到所有在线Broker列表 再给每个Broker发送ListGroupsRequest请求获取 消费者组数据。 2. 查看消费者组详情–describ…

【STM32】IAP升级01 bootloader实现以及APP配置(主要)

APP程序以及中断向量表的偏移设置 前言 通过之前的了解 之前的了解&#xff0c;我们知道实现IAP升级需要两个条件&#xff1a; 1.APP程序必须在 IAP 程序之后的某个偏移量为 x 的地址开始&#xff1b; 2.APP程序的中断向量表相应的移动&#xff0c;移动的偏移量为 x&#xff…

为什么 0.1 + 0.1 !== 0.2

总结了几个很有意思的基础题目&#xff0c;分享一下。 为什么 0.1 0.1 ! 0.2 看到这个问题&#xff0c;不得不想到计算机中的数据类型&#xff0c;其中浮点数表示有限的精度。那么它就无法精确的表示所有的十进制小数&#xff0c;所以在在某些情况下&#xff0c;浮点数的运算…

得帆信息3大核心产品全部入选!中国信通院2023《高质量数字化转型产品及服务全景图》

由中国信息通信研究院&#xff08;以下简称“中国信通院”&#xff09;主办的“2023数字生态发展大会”暨中国信通院“铸基计划”年中会议在京召开&#xff0c;会上中国信通院全面解读并复盘了行业数字化转型的发展趋势&#xff0c;同时正式发布了最新的《高质量数字化转型产品…

从零开始的LINUX(一)

LINUX本质是一种操作系统&#xff0c;用于对软硬件资源进行管理&#xff0c;其管理的方式是指令。指令是先于图形化界面产生的&#xff0c;相比起图形化界面&#xff0c;指令显然更加难以理解&#xff0c;但两者只是形式上的不同&#xff0c;本质并没有区别。 简单的指令&…

雅思考试需要注意些什么?

雅思考试是国际英语语言测试体系&#xff08;IELTS&#xff09;的一部分&#xff0c;是许多想要在国际舞台上学习、工作或移民的人的必备考试。为了在雅思考试中取得成功&#xff0c;考生需要注意一些重要事项。本文知识人网小编将探讨一些关键的注意事项&#xff0c;以帮助考生…

经典算法:最短点对

软件架构师何志丹 说明 旧文新发&#xff0c;改了错别字&#xff0c;死链等。尽量保持“原汁原味”。 难点 如何测试。我的解决方式是&#xff1a;a,三种解法&#xff0c;看结果是否一致。b,小数据&#xff08;100个点&#xff09;&#xff0c;人工排查。第一种方法&#x…

【数据结构】—超级详细的归并排序(含C语言实现)

​ 食用指南&#xff1a;本文在有C基础的情况下食用更佳 &#x1f525;这就不得不推荐此专栏了&#xff1a;C语言 ♈️今日夜电波&#xff1a;斜陽—ヨルシカ 0:30━━━━━━️&#x1f49f;──────── 3:20 …

baichuan2 chat模型sft指令微调数据格式分析

一、前言 百川官网&#xff1a;https://www.baichuan-ai.com/ 模型权重&#xff1a;https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat 记录一下 baichuan 2 的 tokenizer 及 chat 数据构建格式。 二、数据处理代码 根据官方 github 的 finetune 代码&#xff0c;将其…

民企再续“助学故事”,恒昌公益两所“云杉校园”如何聚木成林?

撰稿|多客 来源|贝多财经 “生物世界丰富多彩、五花八门、琳琅满目&#xff0c;可谓大千世界芸芸众生”……这是遵义市正安县安场镇光明完全小学图书馆收藏的一本名为《闯入生物世界》书中所写景象。 在这所学校&#xff0c;课外书籍按照年级及类别进行划分&#xff0c;如一…

M1/M2 Parallels Desktop 19虚拟机安装Windows11教程(超详细)

引言 在Window上VMware最强&#xff0c;在Mac上毫无疑问Parallels Desktop为最强&#xff01; 今天带来的是最新版Parallels Desktop 19虚拟机安装Windows11的教程。 1. 安装Parallels Desktop 19虚拟机 https://blog.csdn.net/weixin_52799373/article/details/133316608 …

RocketMQ 事务消息发送

目录 事务消息介绍 应用场景 功能原理 使用限制 使用示例 使用建议​ 事务消息介绍 在一些对数据一致性有强需求的场景&#xff0c;可以用 RocketMQ 事务消息来解决&#xff0c;从而保证上下游数据的一致性。 应用场景 分布式事务的诉求 分布式系统调用的特点为一个核…

【数据结构】深度剖析最优建堆及堆的经典应用 - 堆排列与topk问题

&#x1f6a9;纸上得来终觉浅&#xff0c; 绝知此事要躬行。 &#x1f31f;主页&#xff1a;June-Frost &#x1f680;专栏&#xff1a;数据结构 &#x1f525;该文章分别探讨了向上建堆和向下建堆的复杂度和一些堆的经典应用 - 堆排列与topk问题。 ❗️该文章内的思想需要用到…

排序学习总结

取每个对象的内接矩形框&#xff0c;然后再排序&#xff0c;根据排序的结果确定原对象顺序。 inner_rectangle1(RegionAffineTrans1, Row1, Column1, Row2, Column2) gen_rectangle1(Rect,Row1, Column1, Row2, Column2) sort_region(Rect,RectSort,character,true, row)count…

Oracle物化视图(Materialized View)

与Oracle普通视图仅存储查询定义不同&#xff0c;物化视图&#xff08;Materialized View&#xff09;会将查询结果"物化"并保存下来&#xff0c;这意味着物化视图会消耗存储空间&#xff0c;物化的数据需要一定的刷新策略才能和基表同步&#xff0c;在使用和管理上比…

【嵌入式】使用嵌入式芯片唯一ID进行程序加密实现

目录 一 背景说明 二 原理介绍 三 设计实现 四 参考资料 一 背景说明 项目程序需要进行加密处理。 考虑利用嵌入式芯片的唯一UID&#xff0c;结合Flash读写来实现。 加密后的程序&#xff0c;可以使得从芯片Flash中读取出来的文件&#xff08;一般为HEX格式&#xff09;不能…

C#WPF命令Command使用实例

本文实例演示C#WPF命令使用实例 定义: 命令(Command):命令表示一个任务单元,并且可跟踪该任务的状态,实际上是实现了ICommand接口的类。然而,命令实际上可以包括任务执行的逻辑代码,也可以不包括从而仅作为联系命令源与命令目标的媒介。比如,WPF 默认的接口实现类Ro…

el-collapse 嵌套中 el-checkbox作为标题,选中复选框与el-tree联动

<el-drawertitle"应用授权":visible.sync"menuDrawer"><el-collapse accordion style"padding: 15px"><el-collapse-item v-for"item in platList"><template slot"title"><el-checkbox v-model…

PostMan、ApiFox等工具Post请求中@RequestParam和@RequestBody的混合使用如何传参

方法签名 PostMapping("/mms/sendAudit")public R sendAudit(RequestParam("mmsId") Long mmsId,RequestParam("ecId") Long ecId,RequestBody(required false) SignMatchRule signMatchRule) {以ApiFox为例子 RequestParam的Params的参数正常…