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

uniapp 实现的下拉菜单组件

采用 uniapp 实现, 是一款具备丝滑折叠、展开动画的下拉菜单,支持 vue2、vue3;适配 web、H5、微信小程序(其他平台小程序未测试过,可自行尝试)

可到插件市场下载尝试: https://ext.dcloud.net.cn/plugin?id=22696

  • 使用示例

请添加图片描述

props 属性

defaultValue

默认值

defaultValue: {
    type: number,
    default: 1,
},

options

选项数组,必须具备 label、value 字段

options: {
    type: Array,
    default: () => [
      { label: "windows", value: 1 },
      { label: "mac", value: 2 },
      { label: "linux", value: 3 },
      { label: "test", value: 4 }
    ],
  },

事件

@onChange

点击选项时触发,返回 options 中提供的选项值,

使用示例

vue2 使用示例

<template>
  <view>
    <view>
      <view class="title">默认样式:</view>
      <view class="comp">
        <wo-dropdown-menu :options="options"></wo-dropdown-menu>
      </view>
    </view>
    <view>
      <view class="title">自定义样式:</view>
      <view
        style="border: 1px solid #999; margin: 5px; font-size: 12px; border-radius: 5px;"
      >
        <wo-dropdown-menu></wo-dropdown-menu>
      </view>
      <view class="comp-dark">
        <wo-dropdown-menu
          :options="options"
          :default-value="4"
          @change="onChange"
        ></wo-dropdown-menu>
      </view>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return {
      options: [
        {
          label: "荆轲",
          value: 1,
        },
        {
          label: "李白",
          value: 2,
        },
        {
          label: "杜甫",
          value: 3,
        },
        {
          label: "白居易",
          value: 4,
        },
        {
          label: "王维",
          value: 5,
        },
        {
          label: "李清照",
          value: 6,
        },
        {
          label: "苏轼",
          value: 7,
        },
      ],
    };
  },
  methods: {
    onChange(data) {
      console.log("选择值:", data);
    },
  },
};
</script>

<style lang="scss" scoped>
.title {
  font-size: 12px;
  color: #999;
  padding: 10px 0 0 10px;
}

.comp {
  font-size: 12px;
}

.comp-dark {
  margin: 5px;
  background-color: black;
  color: white;
  font-size: 12px;
  border-radius: 5px;
}
</style>

vue3 使用示例

<template>
  <view>
    <view>
      <view class="title">默认样式:</view>
      <view class="comp">
        <wo-dropdown-menu :options="state.options"></wo-dropdown-menu>
      </view>
    </view>
    <view>
      <view class="title">自定义样式:</view>
      <view
        style="border: 1px solid #999; margin: 5px; font-size: 12px; border-radius: 5px;"
      >
        <wo-dropdown-menu></wo-dropdown-menu>
      </view>
      <view class="comp-dark">
        <wo-dropdown-menu
          :options="state.options"
          :default-value="4"
          @change="onChange"
        ></wo-dropdown-menu>
      </view>
    </view>
  </view>
</template>

<script setup lang="ts">
import { reactive } from "vue";
const state = reactive({
  options: [
    {
      label: "荆轲",
      value: 1,
    },
    {
      label: "李白",
      value: 2,
    },
    {
      label: "杜甫",
      value: 3,
    },
    {
      label: "白居易",
      value: 4,
    },
    {
      label: "王维",
      value: 5,
    },
    {
      label: "李清照",
      value: 6,
    },
    {
      label: "苏轼",
      value: 7,
    },
  ],
});

const onChange = (data) => {
  console.log("选择值:", data);
};
</script>

<style lang="scss" scoped>
.title {
  font-size: 12px;
  color: #999;
  padding: 10px 0 0 10px;
}

.comp {
  font-size: 12px;
}

.comp-dark {
  margin: 5px;
  background-color: black;
  color: white;
  font-size: 12px;
  border-radius: 5px;
}
</style>

http://www.kler.cn/a/594329.html

相关文章:

  • 第四课:Python数组与链表(动态数据结构的深度探索)
  • 单台openEuler24.03 LTS下的开源大数据环境搭建
  • Spring 如何创建 Bean 实例的?
  • 智慧楼宇:科技编织的未来生活图景
  • 服务器数据恢复—服务器raid故障导致上层分区不可用的数据恢复案例
  • 下一代代币技术白皮书:合规化智能合约与零知识证明隐私协议
  • Android 和 Linux 之间关联和区别
  • FPGA 以太网通信(一)
  • AI鸟类识别技术革新生态监测:快瞳科技如何用“智慧之眼”守护自然?
  • 自定义Spark启动的metastore_db和derby.log生成路径
  • Java 项目 IntelliJ IDEA 多环境配置详解
  • 第58天:Web攻防-SQL注入二次攻击堆叠执行SQLMAPTamper编写指纹修改分析调试
  • 时间语义与窗口操作:Flink 流式计算的核心逻辑
  • 学习笔记 ASP.NET Core Web API 8.0部署到iis
  • 【软件工程】01_软件工程的概述
  • LCCI ESG 中英联合认证国际分析师适合的岗位
  • Cursor/windsurf+MCP+Blender自动建模还有多远
  • 【秣厉科技】LabVIEW工具包——OpenCV 教程(6):dnn实战之YOLO模型推理
  • react路由5和6新增及区别
  • Ubuntu AX200 iwlwifi-cc-46.3cfab8da.0.tgz无法下载的解决办法