使用uniapp实现全局悬浮按钮(可拖动)

效果如下


实现方案

使用uniapp官方组件 movable-area和movable-view


代码解析

  • 在components新建一个xxx.vue组件
  • 重点在于movable-area与movable-view需要分别增加pointer-events: none和pointer-events: auto用于组件事件穿透与恢复组件事件(此处不加会导致引用该组件的父组件无法使用事件)
  • 组件代码如下:
<template>
	<view>
		<movable-area class="movable-area">
			<movable-view class="movable-view" :x="x" :y="y" direction="all">
				<image src="../static/goHome.png"></image>
			</movable-view>
		</movable-area>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				x: 320,		//x坐标
				y: 520,		//y坐标
			}
		}
	}
</script>

<style lang="scss">
	$all_width: 96rpx;
	$all_height:96rpx;

	.movable-area {
		height: 100vh;
		width: 750rpx;
		top: 0;
		position: fixed;
		pointer-events: none;		//此处要加,鼠标事件可以渗透
		.movable-view {
			width: $all_width;
			height: $all_height;
			pointer-events: auto;	//恢复鼠标事件
			image {
				width: $all_width;
				height: $all_height;
			}
		}
	}
</style>

组件生成后可mian.js全局挂载,后续不需要每个页面都进行引入

import App from './App'
import Vue from 'vue'
import myHome from '@/components/my_home.vue'		//引入组件

Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
    ...App
})

Vue.component('my-home',myHome)						//进行全局挂载


app.$mount()

全局挂载后可在需要使用的页面使用

<template>
	<view class="content">
        <!--组件引用-->
		<my-home></my-home>

	</view>
</template>

uniapp悬浮按钮是一种按钮组件,可以让按钮悬浮在手机页面底部。它的实现方法可以通过在页面引入组件的方式来实现。在全局的页面app.vue中引入该组件,并将其写在状态栏的组件中,这样就可以在每个页面上引用该悬浮按钮。具体引入方法可以通过在页面代码中添加以下代码来实现: <drag-button :isDock="true" :existTabBar="true" @btnClick="btnClick" @btnTouchstart="btnTouchstart" @btnTouchend="btnTouchend"> 其中,:isDock="true"表示将按钮设置为悬浮在页面底部的状态,:existTabBar="true"表示按钮存在于底部导航栏上,@btnClick、@btnTouchstart和@btnTouchend则是按钮的点击、触摸开始和触摸结束事件。通过在app.vue中引入该组件后,在每个页面中都可以使用悬浮按钮了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [令按钮悬浮在(手机)页面底部的实现方法](https://download.csdn.net/download/weixin_38713393/12781186)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [uniapp开发小程序如何实现全局悬浮按钮](https://blog.csdn.net/qq_45018844/article/details/123630461)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值