更新记录

1.0.0(2025-01-17)


平台兼容性

uni-app

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 快应用-华为 快应用-联盟

其他

多语言 暗黑模式 宽屏模式
×

使用说明

简介

全能型弹出(悬浮)菜单,支持所有业务需求的弹出菜单自定义,兼容vue2/3、小程序,app-vue, 带默认菜单效果,可设置多种属性,可设置菜单Style,可设置菜单选项Style,所有弹出菜单一网打尽!

引入

默认为easycom模式,可直接键入<shinn-xPopMenu>标签。

事件列表

/**
 * onMenuClick默认菜单 选项被点击时触发
 */

组件方法

/**
 * showPop手动显示菜单
 * hidePop手动隐藏菜单
 */

参数列表

//显示的位置
//可选值:top/top-start/top-end/bottom/bottom-start/
//bottom-end/left/left-start/left-end/right/right-start/right-end
position: {
    type: String,
    default: "bottom",
    required: false,
},
//悬浮菜单数组,如果不设置或者数组长度为0,那么使用自定义样式
menuList: {
    type: Array,
    default: () => {
        return []
    },
    required: false
},
//触发方式 click点击触发 longPress长按触发
trigger: {
    type: String,
    default: "click",
    required: false,
},
//使用默认样式时,设置菜单的方向
direction: {
    type: String,
    default: "row",
    required: false,
},
//延迟多久关闭弹窗框,-1延迟关闭
delay: {
    type: Number,
    default: 2000,
    required: false,
},
//默认菜单样式-背景色
backgroundColor: {
    type: String,
    default: "#000000",
    required: false,
},
//默认菜单样式-文字颜色
fontColor: {
    type: String,
    default: "#ffffff",
    required: false,
},
//默认菜单样式-文字大小
fontSize: {
    type: Number,
    default: 30,
    required: false,
},
//默认菜单自定义样式
customStyle: {
    type: Object,
    default: () => {
        return {}
    },
    required: false,
},
//默认菜单选项自定义样式
customItemStyle: {
    type: Object,
    default: () => {
        return {}
    },
    required: false,
}

示例代码

<template>
    <view class="base">
        <shinn-xPopMenu class="menu" ref="xPopMenu" :position="position" :menuList="menuList" @onMenuClick="onMenuClick"
            direction="row" :delay="-1" trigger="click" backgroundColor="#000" fontColor="#fff" :fontSize="30"
            :customStyle="{
            'font-weight':'normal'
        }">
            <template #default>
                <view class="pop">被绑定元素</view>
            </template>
            <template #menu>
                <view>自定义弹出样式</view>
            </template>
        </shinn-xPopMenu>
        <view class="button">
            <view @click="clickPosition('top')">top</view>
            <view @click="clickPosition('bottom')">bottom</view>
            <view @click="clickPosition('left')">left</view>
            <view @click="clickPosition('right')">right</view>
            <view @click="clickPosition('top-start')">top-start</view>
            <view @click="clickPosition('top-end')">top-end</view>
            <view @click="clickPosition('bottom-start')">bottom-start</view>
            <view @click="clickPosition('bottom-end')">bottom-end</view>
            <view @click="clickPosition('left-start')">left-start</view>
            <view @click="clickPosition('left-end')">left-end</view>
            <view @click="clickPosition('right-start')">right-start</view>
            <view @click="clickPosition('right-end')">right-end</view>
        </view>
    </view>
</template>

<script>
    export default {
        data() {
            return {
                menuList: ["复制", "粘贴"],
                position: "bottom"
            }
        },
        methods: {
            onMenuClick(item) {
                console.log(item)
                this.$refs.xPopMenu.hidePop()
            },
            clickPosition(p) {
                this.position = p
                this.$refs.xPopMenu.showPop()
            }
        }
    }
</script>

<style scoped lang="scss">
    .base {
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
    }

    .button {
        display: flex;
        flex-wrap: wrap;
        width: 100%;
        margin-top: 100rpx;
        justify-content: space-around;

        view {
            margin: 20rpx 0rpx;
            width: 220rpx;
            height: 60rpx;
            line-height: 60rpx;
            border-radius: 20rpx;
            border: 1rpx solid #ccc;
            text-align: center;
        }
    }

    .menu{
        margin-top: 300rpx;
    }

    .pop {
        border: 1rpx solid #eee;
        background-color: #ccc;
        border-radius: 20rpx;
        width: 200rpx;
        height: 100rpx;
        line-height: 100rpx;
        text-align: center;
    }
</style>

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问