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

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.dtcms.com/a/315845.html

相关文章:

  • 21 - 大模型智能体进阶指南 (5):电影助手的知识革命:从静态存储到实时进化 —— 检索增强与自主学习的协同机制
  • 防水防尘防摔性能很好的智能三防手机,还有22000mAh大电池
  • 云平台监控-Zabbix企业级高级应用
  • Cisco 3750X交换机更新到IOS 15.2后无法启动 提示:Boot process failed...
  • 水库雨水情测报和大坝安全监测系统解决方案
  • 极验 G-star 人才特训营:为业务安全领域培养下一代新兴力量
  • 单链表应用实践
  • Python包安全工程实践:构建安全可靠的Python生态系统
  • AI - RAG知识库-进阶(一)
  • Effective C++ 条款24:若所有参数皆需类型转换,请为此采用 non-member 函数
  • 数据结构基础:链表(2)——双向链表、循环链表、内核链表
  • TensorFlow深度学习实战(28)——扩散模型(Diffusion Model)
  • 算法训练之哈希表
  • Yarn Application 日志总结
  • 美化一下达梦grant授权说明
  • 蓝桥杯----DS1302实时时钟
  • 私有云盘新体验:FileRise在cpolar的加持下如何让数据管理更自由?
  • 对话访谈|盘古信息×易景科技:宜宾OEM+ODM 标杆,如何规划数字化转型?
  • MySQL Redo Log浅析
  • 无刷电机控制 - STM32F405+CubeMX+HAL库+SimpleFOC06,速度闭环控制(没电流环)
  • 人工智能领域、图欧科技、IMYAI智能助手2025年7月更新月报
  • SOLIDWORKS 买断许可和订阅许可的资金流影响分析-代理商硕迪科技
  • 江协科技STM32学习笔记1
  • Augmodo AI:零售门店智能货架管理平台
  • 复制网页文字到Word、WPS文字?选中后直接拖放
  • MousePlus鼠标右键增强工具v5.5.25,支持鼠标轮盘功能
  • mac前端环境安装
  • HTTP 与 HTTPS 的区别深度解析:从原理到实践
  • 实战教程 node js 实现上传xls文件批量导入到数据库 解析导入
  • 微服务—Gateway