uniapp鼠标点击位置绘制组件

1 篇文章 0 订阅
1 篇文章 0 订阅

        这几天做地图的时候碰到点小麻烦,在地图上添加好标志物后,点击标志物弹出导航选项。结果弹框位置一直偏差,特此简单测试,记录。

        测试很简单,一块区域,鼠标在区域内点击,在点击处绘制另一个区域。后来又加了个按钮用来关闭。

直接上代码:

<template>
	<view class="mos" @click="move">
		<view v-show="isShow" class="mosare" :style="mosPosition">
			<button class="bt" @click.stop="close" type="default">关闭</button>
		</view>
	</view>
</template>
<script>
	export default {
		data() {
			return {
				mos_x: 50,
				mos_y: 50,
				isShow: false
			}
		},
		methods: {
			move(e) {
				console.log(e); //打印 e 属性
				this.isShow = true;
				this.mos_x = e.touches[0].pageX - e.target.offsetLeft;
				this.mos_y = e.touches[0].pageY - e.target.offsetTop;
			},
			close() {
				this.isShow = false;
			}
		},
		computed: {
			mosPosition: function() {
				return "left:" + (this.mos_x) + "px;top:" + (this.mos_y) + "px";
			}

		}
	}
</script>
<style>
	.mos {
		width: 500px;
		height: 250px;
		position: absolute;
		left: 250px;
		top: 50px;
		background-color: #4CD964;

	}

	.mosare {
		width: 25px;
		height: 25px;
		background-color: #007AFF;
		position: absolute;
	}

	.bt {
		width: 70px;
		height: 40px;
	}
</style>

打印的e 属性:   e.target.offsetTop   父组件距离顶端位置 。 

                           e.touches[0].pageY   点击位置在整个页面的位置,包括已经滚动出窗口的部分。

 绘图,是在父组件中绘制的,所以具体的坐标就是 (e.touches[0].pageY- e.target.offsetTop )

有关其他 位置的属性可以参考:

记录一下pageX,offsetX,clientX,offsetLeft,offsetWidth,pageYoffset,scrollTop,scrollY,等。原文摘自MDN文档库。保证正确。_AILIHEIHEI的博客-CSDN博客

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值