uniapp使用悬浮窗组件添加点击事件的处理方法以及拖拽出界的问题

小程序/H5悬浮窗组件

基本介绍

当我们开发小程序或这app端的时候,有时候会遇到悬浮窗的需求。如果用原生Js写会异常的复杂,所以使用那些大佬们已经开发好的组件会使开发变得异常的简洁。

我刚来亚信实习的时候,接手了项目 - - - 生产端H5的开发。在3.2版本的时候,原型图里画了呼叫悬浮框,然后就开始找插件。在插件市场里面找到了一个很不错的插件,根据上面的介绍,直接在项目里使用,效果看起来很不错,但开发逻辑的时候,发现需要一个点击事件,而我找的插件的源码是没有定义点击事件的。由于我刚接触实习,对于一些知识还没有完全掌握,所以就在网上找其他的示例。找到之后,在刚才那个插件里面修改,最后成功搞定悬浮窗的点击以及拖动边界问题。所以我写下了这篇博客,一来是为了让自己记忆的更清楚;二来,是为了让前端初学者在遇到这样的问题时能够少走弯路。

废话不再多说,直接开始!!!

1. 下载组件

可拖拽悬浮球里点击下载插件ZIP,下载完成后,解压到 uni-app 根目录

在这里插入图片描述

2. 导入组件

这是我的当时的导入方法

import dragBall from "../../components/drag-ball/drag-ball.vue"
3. 组件引用
	<template>
		<view class="content">
			<dragball :x=300 :y=300 image="图片路径"></dragball>
		</view>
	</template>
	
	import dragBall from "../../components/drag-ball/drag-ball.vue"

	export default {
        components: {  // 引用组件
            dragball
        },
        data() {
            return {
            }
        },
        onLoad() {

        },
        methods: {

        }
    }
	
4. 组件参数
属性名类型说明
xNumber小球初始X轴
yNumber小球初始Y轴
imageString球的图片路径
@tapString悬浮框点击事件
5. 使用组件
<dragball :x=300 :y=300 image="图片路径"></dragball>

此时就可以在页面上显示悬浮窗的效果了,让你们看看我的效果:

在这里插入图片描述

6. 出现问题

但此时的悬浮窗虽然已经显示出来,但是却没有点击事件以及拖拽的时候会拖出边界,下面是我的解决办法

7. 在该插件源码上面定义点击事件

进入到该插件的源码组件,定义如下:

 	<template>
 		<view class="holden">
			<image class="ball" :style="'left:'+(moveX == 0 & x > 0 ? x:moveX)+'px;top: '+(moveY == 0 & y> 0? y:moveY )+'px'" @touchstart="drag_start" @touchmove.prevent="drag_hmove" :src="image" mode="aspectFill" @tap="handleBall" ></image>
		</view>
 	</template>

使用该组件时调用

<dragball :x=300 :y=300 image="图片路径" @handleBall="事件名"></dragball>

在下面的methods中定义该方法。

由于代码是在公司的云桌面里开发的,不能粘贴赋值到自己的电脑上,所以接下来的代码我用截图的形式来展示,自己手敲太浪费时间

在这里插入图片描述

点击事件的原理主要就是 组件之间的传值,如果这点不懂的童鞋可以去看下Vue官方文档,介绍还是挺详细的。

关于拖拽边界的问题,在里面也解决了,这里我就不说了,有兴趣的童鞋可以看下这部分代码,也是很简单的!

以上就是我解决这个问题的方法,主要适用于刚接触项目的前端小白和基础不牢固的童鞋,我也是刚刚接触到企业级项目的小白,希望大家与我共勉!!!

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值