uni-app:实现页面效果1

news2024/11/23 20:41:12

效果

代码

<template>
	<view>
		<view class="add">
			<image :src="add_icon" mode=""></image>
		</view>
		<view class="container_position">
			<view class="container_info">
				<view class="position">
					<view class="circle">
						<img :src="device" class="center-image">
						<view v-for="(item, index) in itemList" :key="index" class="item" :style="getItemStyle(index)">
							<img :src="item.src" />
							<view>{{ item.name }}</view>
						</view>
					</view>
				</view>
			</view>
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				device: getApp().globalData.icon + 'look/device.png',
				add_icon: getApp().globalData.icon + 'look/add.png',
				itemList: [{
						name: "车道指示器",
						src: "/static/item2.png"
					},
					{
						name: "车道指示器",
						src: "/static/item3.png"
					},
					{
						name: "车道指示器",
						src: "/static/item4.png"
					},
					{
						name: "车道指示器",
						src: "/static/item5.png"
					},
					{
						name: "车道指示器",
						src: "/static/item6.png"
					},
					{
						name: "车道指示器",
						src: "/static/item7.png"
					},
					{
						name: "车道指示器",
						src: "/static/item8.png"
					},

				],
				circleRadius: 240, // 圆的半径
				itemSize: 120, // 每个view的大小
			}
		},
		methods: {
			// 计算每个 view 的样式
			getItemStyle(index) {
				const {
					itemList,
					circleRadius,
					itemSize
				} = this;
				const angle = (2 * Math.PI) / itemList.length; // 每个 view 的角度间隔
				const centerX = circleRadius + itemSize / 2; // 圆心的 x 坐标
				const centerY = circleRadius + itemSize / 2; // 圆心的 y 坐标
				const radius = circleRadius + itemSize / 2; // view 的圆心距离(圆的半径加上 view 大小的一半)
				const x = Math.round(centerX + radius * Math.cos(angle * index - Math.PI / 2)); // 计算 x 坐标
				const y = Math.round(centerY + radius * Math.sin(angle * index - Math.PI / 2)); // 计算 y 坐标

				return {
					width: itemSize + "rpx",
					height: itemSize + "rpx",
					position: "absolute",
					top: y + "rpx",
					left: x + "rpx",
					transform: `translate(-50%, -50%)`, // 居中显示
				};
			},
		}
	}
</script>

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

	.add {
		// border: 1px solid black;
		image {
			width: 60rpx;
			height: 60rpx;
		}
		text-align:right;
		padding:2% 2% 0 0;
	}

	.container_position {
		width: 100%;
		display: flex;
		justify-content: center;
		align-items: center;

		.container_info {
			width: 95%;

			/* 整体位置 */
			.position {
				/* border: 1px solid black; */
				position: absolute;
				top: 50%;
				left: 50%;
				transform: translate(-50%, -50%);
			}

			/* 圆的样式 */
			.circle {
				width: 600rpx;
				height: 600rpx;
				border-radius: 50%;
				/* border: 1px solid black; */
			}

			/* 中间图标 */
			.center-image {
				width: 160rpx;
				height: 160rpx;
				position: absolute;
				top: 50%;
				left: 50%;
				border-radius: 50%;
				transform: translate(-50%, -50%);
				box-shadow: 0 4px 6px rgba(0, 0, 0, 0.4);
			}

			/* 小图标 */
			.item {
				display: flex;
				flex-direction: column;
				align-items: center;
				justify-content: center;
				text-align: center;

				// border: 1px solid black;
				view {
					font-size: 90%;
					width: 120%;
					margin-top: 10%;
				}
			}

			/* 小图标的图片信息 */
			.item img {
				width: 100rpx;
				height: 100rpx;
				border-radius: 50%;
				box-shadow: 0 4px 6px rgba(0, 0, 0, 0.4);
			}
		}
	}
</style>

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

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

相关文章

69.渲染函数如何提高Vue应用程序的效率

通过使用虚拟 DOM&#xff0c;Vue 可以比直接操作真实 DOM 更高效地更新和渲染用户界面。渲染函数可用于在服务器上预渲染组件&#xff0c;从而提高应用程序的初始加载性能。渲染函数可让我们完全控制组件的结构和内容&#xff0c;从而构建自定义的复杂用户界面。 h() 函数&…

Java笔记:手写spring之aop

手写spring之aop 仓库地址: Raray-chuan/mini-spring 博文列表: 导读手写spring之ioc手写spring之aop手写spring之简单实现springboot 1.什么是AOP AOP(Aspect-oriented Programming), AOP翻译过来叫面向切面编程, 核心就是这个切面. 切面表示从业务逻辑中分离出来的横切…

【排序算法】冒泡排序、插入排序、归并排序、希尔排序、选择排序、堆排序、快速排序

目录 几大排序汇总 1.冒泡排序 性能: 思路和代码: 2.插入排序 性能: 思路和代码: 3.归并排序 性能: 思路和代码: 4.希尔排序 性能: 思路和代码: 5.选择排序 性能: 思路和代码: 6.堆排序 性能: 思路和代码: topK问题 7.快速排序 性能: 思路和代码: 几大排…

vue3自定义全局Loading

自定义插件之全局Loading ElementPlus的默认全局Loading 如果完整引入了 Element Plus&#xff0c;那么 app.config.globalProperties 上会有一个全局方法$loading&#xff0c;同样会返回一个 Loading 实例。 名称说明类型默认targetLoading 需要覆盖的 DOM 节点。 可传入一…

田忌赛马Java

给定两个大小相等的数组 A 和 B&#xff0c;A 相对于 B 的优势可以用满足 Ai] > Bi] 的索的数目来描述。 返回 A的任意排列&#xff0c;使其相对于 B 的优势最大化. 其实核心思想就是让A中的数最小且刚好大于B中数,我们可以用链表来存储A和B中对应的数据,至于B比A中所有的数…

优优嗨聚集团:餐饮发展与房地产的关联:一种强效应的探索

随着时代的进步和经济的发展&#xff0c;餐饮业和房地产行业已成为人们日常生活中的重要组成部分。这两个行业之间存在着复杂的联系&#xff0c;它们相互影响、相互促进&#xff0c;形成了独特的经济现象。本文将从多个角度分析餐饮发展与房地产之间的关联&#xff0c;并探讨这…

苹果Vision Pro头显内置AI芯片

苹果首席执行官蒂姆库克近日在接受采访时确认&#xff0c;备受瞩目的Vision Pro头显将按计划于明年初在美国上市。这款头显被认为是苹果自iPhone以来最重要的产品之一&#xff0c;售价高达3499美元。 蒂姆库克在接受CBS Sunday Morning的采访时透露&#xff0c;他的团队对Visi…

一、浏览器输入URL会发生什么

参考链接&#xff1a;B站视频链接&#xff1a;https://www.bilibili.com/video/BV1qL411G7uj/ 本视频讲述了HTTP协议及其工作原理&#xff0c;包括HTTP协议的三次握手建立TCP连接、HTTP请求报文、HTTP响应报文等。同时&#xff0c;本视频还介绍了浏览器解析域名并建立TCP连接的…

Failed to load property source from location ‘classpath:/application.yml‘

前言 给同学部署项目的时候出现了这个错误&#xff0c;困扰我半天&#xff0c;搞了一下午&#xff0c;最后Google找到了答案。 在这里记录一下&#xff01; 解决方案 第一步&#xff1a;删除原有yml文件&#xff0c;把内容复制下来&#xff0c;重新写一个然后再粘贴进去 …

基于微信小程序的车位预定系统设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言用户的主要功能有&#xff1a;管理员的主要功能有&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W…

96.不同的二叉搜索树

​ 题目&#xff1a; 96. 不同的二叉搜索树 中等 2.4K 相关企业 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xf…

debian设置允许root登录

新debian安装后默认不能使用root登录&#xff0c;下文给出解决办法。 备份此文件 cp /etc/gdm3/daemon.conf /etc/gdm3/daemon.conf.bk 修改 /etc/gdm3/daemon.conf&#xff0c;在[security]下面新增AllowRoot true 保存。接着修改 /etc/pam.d/gdm-password 文件&#xff0…

Feign 使用篇

Feign是一个声明式的HTTP客户端工具&#xff0c;它简化了在分布式系统中进行服务间通信的过程。开发人员可以使用Feign来定义接口&#xff0c;然后通过该接口来调用远程服务&#xff0c;就像调用本地方法一样简单。 目录 Feign的一些关键特性和概念&#xff1a;openfeign 对比 …

算法:O(1) 时间插入、删除和获取随机元素---哈希表+动态数组

1、题目&#xff1a; 实现RandomizedSet 类&#xff1a; RandomizedSet() 初始化 RandomizedSet 对象bool insert(int val) 当元素 val 不存在时&#xff0c;向集合中插入该项&#xff0c;并返回 true &#xff1b;否则&#xff0c;返回 false 。bool remove(int val) 当元素…

基于jquery开发的Windows 12网页版

预览 https://win12.gitapp.cn 首页代码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"refresh" content"0;urldesktop.html" /> <meta name"viewport&…

上海亚商投顾:沪指放量涨1.55% AI概念股全线爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数9月22日放量反弹&#xff0c;沪指午后涨超1%&#xff0c;重返3100点上方&#xff0c;创业板指涨超2%…

通过monorepo管理多个子项目

通过monorepo管理多个子项目 1. Monorepo模式 在Monorepo 模式下,根目录通常不建议直接安装依赖,而是通过工作区(workspaces)来管理依赖。 但是在一些情况下,在根目录安装一些共享依赖也是可以的。 在根目录安装开发相关的依赖 如TypeScript, ESLint, Jest等。这些可以被所有…

手把手教 - 开源库 libmodbus 的RTU-Master 的使用笔记

测试环境&#xff1a;基于nuc980开发板 Linux信息&#xff1a;Linux buildroot 4.4.289 #8 PREEMPT Thu Sep 21 14:29:45 CST 2023 armv5tejl GNU/Linux 目录&#xff1a; 一、libmodbus 库简介 二、下载链接 三、移植准备 四、移植过程和完整代码 五、测试结果 一、libmodbus …

虚拟机数据恢复:Stellar Data Recovery for Virtual Machine

虚拟机数据恢复-----Crack Version Stellar Data Recovery for Virtual Machine 软件可从 VMware (.vmdk)、ORACLE (.vdi) 和 Microsoft (.vhd) 虚拟映像文件中恢复丢失和删除的数据。 从 VMDK、VDI 和 VHD 虚拟映像文件中恢复数据提供原始恢复选项来恢复数据从已删除或无法识…

太阳能供电模块

基于Solar Cell的锂电池充放电模块 由于一些需求&#xff0c;最近做了一款基于太阳能的锂电池充放电模块。该模块能够利用太阳能为锂电池充电和为负载提供5V的电压&#xff0c;在太阳能不充足的条件下&#xff0c;由锂电池提供需要的能量。 主要思路是将太阳能板获得的能量存储…