uniapp 微信小程序Vue3項目使用內置組件movable-area封裝懸浮可拖拽按鈕(拖拽結束時自動吸附到最近的屏幕邊緣)

一、最終效果

在這里插入圖片描述

二、具體詳情請看movable-area與movable-view官方文檔說明

三、參數配置

1、代碼示例

<TFab title="新建訂單" @click="addOrder" />
// title:表按鈕文案
// addOrder:點擊按鈕事件

四、組件源碼

<template><movable-area class="movable-area" @touchend="onTouchend"><movable-view class="movable-view" :x="x" :y="y" direction="all" @change="onChange"><view class="addBtn" :style="{ width: `${width}px` , height: `${height}px`}" @tap="handleClick">{{title}}</view><slot /></movable-view></movable-area>
</template><script lang="ts" setup>
import { debounce } from "@/utils";
defineProps({title: {type: String},width: {type: Number,default: 40},height: {type: Number,default: 40}
});
const emits = defineEmits(["click"]);
const x = ref(0);
const y = ref(0);
const screenWidth = ref(0);
const screenHeight = ref(0);onMounted(() => {uni.getSystemInfo({success: res => {screenWidth.value = res.windowWidth;screenHeight.value = res.windowHeight;// 初始位置在屏幕右下角y.value = screenHeight.value - 200;x.value = screenWidth.value - 70;}});
});
// 拖動坐標更新(防抖)
const onChange = (e: { detail: { x: number; y: number } }) => {debounce(() => {x.value = e.detail.x;y.value = e.detail.y;}, 500);
};
// 觸摸結束時吸附邊緣
const onTouchend = () => {nextTick(() => {const threshold = 50; // 吸附閾值(rpx)if (Math.abs(x.value - 0) < threshold) {x.value = 0;} else if (Math.abs(x.value - screenWidth.value) < threshold) {x.value = screenWidth.value;}if (Math.abs(y.value - 0) < threshold) {y.value = 0;} else if (Math.abs(y.value - screenHeight.value) < threshold) {y.value = screenHeight.value;}});
};
const handleClick = () => {emits("click");
};
</script><style lang="scss">
.movable-area {position: fixed;top: 0;left: 0;width: 100vw;height: calc(100vh - 100px); // 可根據自己的項目來計算pointer-events: none; /* 關鍵樣式 */z-index: 9999;.movable-view {pointer-events: auto; /* 關鍵樣式 */width: 100rpx;height: 100rpx;will-change: transform;.addBtn {border-radius: 50%;width: 40px;height: 40px;overflow: hidden;display: flex;justify-content: center;align-items: center;color: #fff;font-size: 14px;padding: 8px;box-shadow: 0 1px 5px 2px rgba(0, 0, 0, 0.3);background: #355db4;text-align: center;}}
}
</style>

相關文章

基于ElementUi再次封裝基礎組件文檔


vue3+ts基于Element-plus再次封裝基礎組件文檔

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/89075.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/89075.shtml
英文地址,請注明出處:http://en.pswp.cn/web/89075.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

linux kernel為什么要用IS_ERR()宏來判斷指針合法性?

在 Linux 內核中&#xff0c;IS_ERR() 宏的設計與內核的錯誤處理機制和指針編碼規范密切相關&#xff0c;主要用于判斷一個“可能攜帶錯誤碼的指針”是否代表異常狀態。其核心目的是解決內核中指針返回值與錯誤碼的統一表示問題。以下從技術背景、設計邏輯和實際場景三個維度詳…

Cookie與Session:Web開發核心差異詳解

理解 Cookie 和 Session 的區別對于 Web 開發至關重要,它們雖然經常一起使用,但扮演著不同的角色。核心區別在于: Cookie:存儲在客戶端(用戶的瀏覽器)的數據片段。 Session:存儲在服務器端的數據結構,用于跟蹤特定用戶的狀態。 下面是詳細的對比: 特性CookieSession…

【相干、相參】 雷電名詞溯源

〇、廢話因緣 最近某些國產的微波制造公司總是提到一個概念【相干】【相參】【嚴格相參】等等概念層出不窮&#xff0c;讓人苦惱。 一、這玩意還是英文溯源吧 這幾個概念都聚焦在一個單詞【Coherence】&#xff1b;所以就是說兩個波形之間有某種聯系&#xff0c;不一定就是完全…

MYSQL練習2

一、對mydb11_stu庫進行查詢步驟1.創建mydb11_stu庫并使用2.創建score表和student表3.向兩張表插入數據student表&#xff1a;score表&#xff1a;4.完成查詢&#xff08;1&#xff09;分別查詢student表和score表的所有記錄&#xff08;2&#xff09;查詢student表的第2小到5條…

Spring Boot全局異常處理:打造堅如磐石的應用防線

引言在當今的軟件開發領域&#xff0c;隨著業務的日益復雜和系統規模的不斷擴大&#xff0c;Spring Boot 已成為 Java 開發中備受青睞的框架。它以其強大的功能、便捷的配置和快速的開發體驗&#xff0c;幫助開發者們高效地構建各種應用程序。在 Spring Boot 應用的開發過程中&…

藥品掛網價、藥品集采價格、藥品上市價格一鍵查詢!

相信許多人在查詢藥品價格時感到無從下手&#xff0c;那是因為對藥品定價機制和標準的不了解&#xff0c;醫院及藥店的藥品價格查詢可通過筆者之前的文章進行了解&#xff1a;如何查詢藥品的價格&#xff08;醫院&藥店&鄉鎮衛生院&#xff09;&#xff1f; 而今天筆者要…

【iOS】方法與消息底層分析

目錄 前言 方法的本質 向不同對象發送消息 發送實例方法 發送類方法 對象調用方法 實際執行是父類 向父類發送類方法 消息查找流程 開始查找 快速查找流程 慢速查找流程 動態方法決議 應用場景 優化方案 消息轉發機制 快速轉發流程 應用場景 慢速轉發流程 應…

如何通過 WebSocket 接口訂閱實時外匯行情數據(PHP 示例)

步驟 1&#xff1a;準備工作確保已安裝 PHP 和 Composer安裝 WebSocket 客戶端庫&#xff1a;composer require textalk/websocket步驟 2&#xff1a;編寫代碼訂閱行情以下是最簡可運行的 PHP 示例&#xff0c;訂閱 EUR/USD 的 1分鐘K線數據&#xff1a;<?phprequire vendo…

第十八篇 數據清洗:Python智能篩選與統計:從海量Excel數據中秒級挖掘,輔助決策!你的數據分析利器!

Excel 數據挖掘Excel篩選復雜&#xff0c;統計耗時&#xff0c;無法快速挖掘數據價值1.數據篩選核心&#xff1a;df.loc與df.iloc&#xff0c;精準定位你想要的數據1.1基于條件篩選&#xff1a;過濾數據中的不恰當因素1.2 多條件組合篩選&#xff1a;精確鎖定目標數據1.3字符串…

小木的機器學習日記——KNN

核心知識點總結與星級排序我為你梳理了這節課的精髓&#xff0c;并按照重要性進行了星級評定&#xff08;★★★★★為最高&#xff09;。★★★★★ 核心思想&#xff1a;回歸 (Regression) 到底是什么&#xff1f;是否關鍵&#xff1a;是必須了解&#xff1a;是必須記住&…

Product Hunt 每日熱榜 | 2025-07-15

1. OpenArt One-Click Video Story 標語&#xff1a;一鍵即可將任何內容轉換為可隨時發布的視頻。 介紹&#xff1a;有一個創意、劇本、節奏&#xff0c;或者喜歡的角色嗎&#xff1f;OpenArt可以將它們變成一個視覺故事—完整的畫面、音樂和敘事結構&#xff0c;輕松實現&am…

Dubbo高階難題:異步轉同步調用鏈上全局透傳參數的丟失問題

?問題場景?&#xff1a; 在分布式電商系統中&#xff0c;下單服務通過Dubbo調用庫存服務&#xff08;異步接口返回CompletableFuture&#xff09;&#xff0c;同時在Gateway層通過RpcContext設置traceId。你發現&#xff1a;當庫存服務內部同步調用其他服務時&#xff0c;tra…

實測兩款效率工具:駕考刷題和證件照處理的免費方案

今天阿燦給大家推薦兩款實用的軟件&#xff0c;一款是駕考助手&#xff0c;另一款是證件照制作軟件。第一款&#xff1a;駕考助手以前考駕照&#xff0c;很多人擔心過不了關&#xff0c;還會花冤枉錢買VIP練習&#xff0c;精選500題。其實&#xff0c;只要用對工具&#xff0c;…

Python 函數的維護性與復用性

目錄 一、從“能跑就行”到“能改不怕”——維護性的第一要義 二、單一職責與最小驚訝——維護性的縱深防御 三、可組合的樂高——復用性的第一階梯 四、面向協議設計——復用性的第二階梯 五、異常策略與日志——維護性的隱形護盾 七、測試金字塔——維護性的最后護城河…

C++中的模板參數 vs 函數參數:編譯期與運行期的分界線

引言 在日常開發中&#xff0c;我們經常接觸 函數參數&#xff0c;這是控制函數行為的最直接方式。但在 C 中還有一種強大的機制 —— 模板參數&#xff08;Template Parameters&#xff09;&#xff0c;它賦予了我們在編譯期就生成代碼結構的能力。 本文將通過直觀的類比&…

Elasticsearch 9.x 搜索執行過程(源碼解析)

1. Elasticsearch 9.x 搜索執行過程 - 源碼解析 #mermaid-svg-Vp6WKKBLo3omajeq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-Vp6WKKBLo3omajeq .error-icon{fill:#552222;}#mermaid-svg-Vp6WKKBLo3omajeq .error…

簡單易懂,操作系統的內存管理機制是如何實現的

系統地梳理一下操作系統在“內存管理”這個重要領域中&#xff0c;到底扮演了什么角色&#xff0c;需要完成哪些核心任務。想象一下&#xff0c;操作系統是一位經驗豐富的高級公寓管理員。內存&#xff1a;就是這棟高級公寓大樓。進程&#xff1a;一個個想要入住的租戶。內存管…

《大數據技術原理與應用》實驗報告一 熟悉常用的Linux操作和Hadoop操作

目 錄 一、實驗目的 二、實驗平臺 三、 實驗內容和要求 1. 安裝虛擬機 2. 熟悉常用的 Linux 命令 3. 進行 Hadoop 偽分布式安裝 4. 熟悉常用的 Hadoop 操作 四、實驗環境 五、實驗內容與完成情況 1. 安裝虛擬機 2. 熟悉常用的 Linux 命令 3. 進行 Hadoop 偽分布式…

I/O 多路復用詳解筆記

I/O 多路復用筆記 什么是I/O多路復用 I/O多路復用&#xff08;I/O Multiplexing&#xff09;是一種**允許單個線程&#xff08;或進程&#xff09;監聽多個I/O描述符&#xff08;fd&#xff09;**上是否就緒&#xff08;可讀/可寫/異常&#xff09;的方法。這種方式可以有效地管…

李白周游記50篇

https://mp.weixin.qq.com/s/7MThy1kCOATS-8ZWc09_1g 李白周游記50篇 卡西莫多 2025年07月15日 安徽 李白周游記50篇記錄&#xff0c;現在寫了50個小朋友&#xff0c;覺得有趣愿意加進這個連載的歡迎告知大名和出生年月&#xff0c;限20歲以下6歲以上的小朋友&#xff0c;慢…