自制微信小程序popover菜单,气泡悬浮弹窗

效果图

核心思想:

通过设置列表项为相对布局,菜单为绝对布局,并利用正方形旋转实现小三角效果,根据点击位置动态调整菜单显示。

源码:直接能用

js 复制代码
<template>
  <view class="container">
    <button @click="toggleMenu">点击显示气泡菜单</button>

    <view v-if="isMenuVisible" class="bubble-menu" @click="closeMenu">
      <view class="square"></view>
      <view class="menu-item" @click.stop="handleMenuItemClick('item1')">菜单项 1</view>
      <view class="menu-item" @click.stop="handleMenuItemClick('item2')">菜单项 2</view>
      <view class="menu-item" @click.stop="handleMenuItemClick('item3')">菜单项 3</view>
    </view>
  </view>
</template>

<script setup>

const isMenuVisible = ref(true)
const toggleMenu = () => {
  isMenuVisible.value = !isMenuVisible.value
}

const closeMenu = () => {
  isMenuVisible.value = false
}

const handleMenuItemClick = item => {
  console.log(`点击了 ${item}`)
  closeMenu() // 点击后关闭菜单
}
</script>

<style lang="scss" scoped>
.container {
  position: relative;
  padding: 20px;
}

.bubble-menu {
  position: absolute;
  top: 50px; /* 根据需要调整 */
  left: 0;
  background: white;
  border: 1px solid #ccc;
  border-radius: 5px;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
  z-index: 1000;
  padding: 10px;
}
.square {
  position: absolute;
  top: -10px; /* 三角形位置调整 */
  left: 10px; /* 三角形位置调整 */
  width: 30rpx;
  height: 30rpx;
  border: 1px solid #ccc;
  border-bottom-color: transparent;
  border-right-color: transparent;
  transform: rotate(45deg);
  background: #ffffff;
}

.menu-item {
  padding: 10px 20px;
  cursor: pointer;
}

.menu-item:hover {
  background-color: #f0f0f0;
}
</style>
相关推荐
毕设源码-朱学姐5 小时前
【开题答辩全过程】以 工厂能耗分析平台的设计与实现为例,包含答辩的问题和答案
java·vue.js
老前端的功夫6 小时前
Vue 3 性能深度解析:从架构革新到运行时的全面优化
javascript·vue.js·架构
天天扭码6 小时前
如何实现流式输出?一篇文章手把手教你!
前端·aigc·ai编程
前端 贾公子7 小时前
vue移动端适配方案 === postcss-px-to-viewport
前端·javascript·html
GISer_Jing8 小时前
AI营销增长:4大核心能力+前端落地指南
前端·javascript·人工智能
明远湖之鱼8 小时前
一种基于 Service Worker 的渐进式渲染方案的基本原理
前端
前端小端长9 小时前
Vue 中 keep-alive 组件的原理与实践详解
前端·vue.js·spring
FeelTouch Labs9 小时前
Nginx核心架构设计
运维·前端·nginx
雪球工程师团队9 小时前
别再“苦力”写后台,Spec Coding “跑” 起来
前端·ai编程