当前位置: 首页 > web >正文

uniapp 类似popover气泡下拉框组件

需要实现一个app端类似于elementUI上popover组件的下拉效果,发现uniapp和uview没找到合适的

以下组件仅测试过app,且细节处需要自行调整

描述: 点击更多按钮后弹出下拉框,点击其他区域会关闭下拉框

效果:

组件:

<!-- 下拉菜单组件 -->
<template><view class="custom-picker"><view class="picker-header" @click="togglePicker">更多<text class="arrow" :class="{ 'arrow-up': showPicker }"></text></view><view v-if="showPicker" class="picker-options"><viewv-for="(item, index) in items":key="index"@click="selectItem(item)">{{ item.label }}</view></view><!-- 遮罩层,用于点击关闭 --><viewv-if="showPicker"class="mask"@click="closePicker"catchtouchmove></view></view>
</template><script>
export default {props: {items: {type: Array,default: () => [],},},data() {return {showPicker: false,selectedItem: '',}},methods: {togglePicker() {this.showPicker = !this.showPicker},closePicker() {this.showPicker = false},selectItem(item) {this.selectedItem = itemthis.showPicker = falsethis.$emit('change', item)},},
}
</script><style scoped>
.custom-picker {position: relative;z-index: 100;
}
.picker-header {display: flex;justify-content: center;align-items: center;cursor: pointer;
}
.picker-options {position: absolute;width: 200rpx;top: 60rpx;left: -74rpx;border: 1px solid #ccc;border-radius: 5px;background-color: #fff;z-index: 101;color: #333;box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
}
.picker-options view {padding: 10px;border-bottom: 1px solid #eee;
}
.picker-options view:last-child {border-bottom: none;
}
.arrow {margin-left: 8rpx;width: 0;height: 0;border-left: 12rpx solid transparent;border-right: 12rpx solid transparent;border-top: 16rpx solid #ffffff;transition: transform 0.3s;position: relative;top: 2rpx;
}
.arrow-up {transform: rotate(180deg);top: -2rpx;
}
.mask {position: fixed;top: 0;left: 0;right: 0;bottom: 0;z-index: 99;background-color: transparent;
}
</style>

调用

 <custom-picker :items="items" @change="onCustomPickerChange"></custom-picker>items: [{ label: '删除' },{ label: '详情' },{ label: '停用' },],onCustomPickerChange(e) {console.log(e)},

http://www.xdnf.cn/news/17180.html

相关文章:

  • LeetCode——2683. 相邻值的按位异或
  • Spring Boot 与 Ollama 集成部署私有LLM服务 的完整避坑指南,涵盖 环境配置、模型管理、性能优化 和 安全加固
  • 【Electron】electron-vite中基于electron-builder与electron-updater实现程序远程自动更新,附源码
  • 对于包含大量文件的程序的便捷makefile操作
  • 建筑地产安全监控误报率↓77%:陌讯多模态融合算法实战解析
  • 布控球是什么?布控球有什么作用?什么场景下会使用到布控球设备?一篇短文带你了解
  • Windows驱动更新下载工具,电脑硬件设备驱动程序自动安装下载更新,可备份还原!键盘鼠标声卡网卡显卡主板硬盘驱动都可以下载,免费使用的神器!
  • 【软考中级网络工程师】2021年下半年上午真题及答案解析
  • 【科研绘图系列】R语言绘制误差棒图
  • C++继承关系中,深度解析类内存布局与多态的实现
  • PDF 文本提取技术深度对比:基于规则与基于模型的两种实现
  • 【乐企板式文件生成工程】关于乐企板式文件(PDF/OFD/XML)生成工程介绍
  • 结合opencv解释图像处理中的结构元素(Structuring Element)
  • C语言的结构体与联合体
  • 通信算法之301:IP核之单双端口 RAM和FIFO 读写
  • 【设计模式】代理模式
  • 【HUST】计算机|大学计算机基础内容(纯科普向)+数据结构数组、树、队列【旧文搬运】
  • Mac上pnpm的安装与使用
  • Java技术栈/面试题合集(12)-Maven篇
  • 使用maven-shade-plugin解决es跨版本冲突
  • ApplicationContext的实现类有哪些?
  • JSqlParser学习笔记 快速使用JSqlParser
  • C++临时对象:来源与性能优化之道
  • mysql 数据库系统坏了,物理拷贝出数据怎么读取
  • 【机器学习】(算法优化一)集成学习之:装袋算法(Bagging):装袋决策树、随机森林、极端随机树
  • Day31:文件的规范拆分与写法
  • XXE漏洞原理及利用
  • QT:交叉编译mysql驱动库
  • 【测试】⽤例篇
  • 【Pytorch✨】LSTM04 l理解长期记忆和短期记忆