微信小程序 - 最新详细实现气泡菜单功能,点击任意元素在底部或附近周围弹出气泡菜单列表,仿微信气泡弹框显示菜单快捷功能收纳,自定义气泡弹窗/菜单气泡弹窗,小程序气泡框嵌套菜单组件插件,自动计算弹出定位

19 篇文章 2 订阅 ¥9.90 ¥99.00

前言

如果您需要 uniapp 全端兼容版本,请访问 这篇文章。

在微信小程序开发中,详解实现 “点击按钮/图标/文字/任意html元素时,从底部弹出气泡菜单” 效果,气泡框弹出位置可固定为上下左右或者自动根据周围附近的元素决定(确保不会出现遮挡覆盖无法点击菜单等问题),点击菜单项后气泡自动消失,类似微信App右上角加号+点击展开悬浮菜单功能效果,支持菜单列表内容 slot 插槽自定义任何样式、可在菜单项前方加入图标等操作,气泡弹框带 “小三角指向”,适用于收纳各种功能到某个元素中,快捷功能放到气泡菜单列表中。

小程序 vue2 | vue3 版本语法都能使用,跟着教程复制代码运行稍加改造即可。


如下图所示,无论你的触发元素在页面的任何位置,气泡菜单都能精准计算不会遮挡和覆盖。

详细示例代码及注释,uniapp小程序也能用,保证新手小白100%搞定。

在这里插入图片描述

示例代码

具体实现代码如下,请直接复制运行测试即可。

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
微信聊天气泡弹出菜单位置,通常是相对于气泡位置进行定位的。 在uniapp中,你可以通过计算气泡元素位置,来确定弹出菜单位置。具体步骤如下: 1. 在气泡元素上添加一个ref属性,以便在JavaScript代码中获取气泡元素。 ```html <template> <view> <view ref="bubble">气泡内容</view> <view ref="menu">弹出菜单内容</view> </view> </template> ``` 2. 在JavaScript代码中,使用uniapp提供的 `uni.createSelectorQuery` API 来获取气泡元素位置信息。 ```js onReady() { // 创建选择器对象 const selector = uni.createSelectorQuery(); // 选择气泡元素 selector.select('#bubble').boundingClientRect(); // 执行查询,并在回调函数中获取位置信息 selector.exec(res => { const bubbleRect = res[0]; console.log(bubbleRect.top, bubbleRect.left, bubbleRect.width, bubbleRect.height); }); } ``` 3. 计算弹出菜单位置。通常可以将菜单放置在气泡的下方,或者右侧。 ```js onReady() { // 创建选择器对象 const selector = uni.createSelectorQuery(); // 选择气泡元素 selector.select('#bubble').boundingClientRect(); // 执行查询,并在回调函数中获取位置信息 selector.exec(res => { const bubbleRect = res[0]; console.log(bubbleRect.top, bubbleRect.left, bubbleRect.width, bubbleRect.height); // 计算菜单位置 const menuTop = bubbleRect.top + bubbleRect.height; const menuLeft = bubbleRect.left + bubbleRect.width; console.log(menuTop, menuLeft); }); } ``` 4. 使用 `uni.createSelectorQuery` API 来设置弹出菜单位置。 ```js onReady() { // 创建选择器对象 const selector = uni.createSelectorQuery(); // 选择气泡元素菜单元素 selector.select('#bubble').boundingClientRect(); selector.select('#menu').boundingClientRect(); // 执行查询,并在回调函数中设置菜单位置 selector.exec(res => { const bubbleRect = res[0]; const menuRect = res[1]; // 计算菜单位置 const menuTop = bubbleRect.top + bubbleRect.height; const menuLeft = bubbleRect.left + bubbleRect.width; // 设置菜单位置 this.$refs.menu.style.top = menuTop + 'px'; this.$refs.menu.style.left = menuLeft + 'px'; }); } ``` 在上面的示例中,我们使用 `uni.createSelectorQuery` API 来获取气泡元素菜单元素位置信息,并计算菜单位置。最后,我们使用 `this.$refs.menu.style.top` 和 `this.$refs.menu.style.left` 来设置菜单位置。 注意,上面的示例中假设菜单是绝对定位的,如果你的菜单使用其他布局方式,需要根据实际情况进行调整。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王佳斌

请作者喝杯咖啡 :)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值