uniapp微信小程序 --下拉菜单

这篇具有很好参考价值的文章主要介绍了uniapp微信小程序 --下拉菜单。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  一、直接先上效果图

uniapp 下拉菜单,uniapp微信小程序相关,uni-app,微信小程序,小程序

二、原因

就是原生写这个本来就是一件很简单的事情,但是uniapp里面不支持selct,他封装了东西应该是,插件市场试了好几个也不太行。最后还是找到一个博主的写的很好,记录一下。

三、代码

这是封装好的需要什么样式自己调整

<template>
	<view class="ep-picker-box">
		<!-- 蒙版区域 开始 -->
		<view class="ep-mask-box" v-show="show" @click="show=false"></view>
		<!-- 蒙版区域 开始 -->

		<!-- 输入框区域 开始 -->
		<view class="ep-input-box" @click="openOptions" :class="{'disabled':disabled}">
			<view style="display: flex;align-items: center;min-height: 36px;">{{showLabel}}</view>
			<text v-if="!show" class="iconfont icon-xiala"></text>
			<text v-else class="iconfont icon-xialashang"></text>
		</view>
		<!-- 输入框区域 结束 -->

		<!-- 弹出的下拉区域 开始 -->
		<view v-show="show" class="ep-picker-content-wrap">
			<scroll-view class="ep-picker-content" :scroll-y="true">
				<!-- 展示下拉项列表 开始 -->
				<view v-for="item in options" :key="item[value_key]"
					:class="{'disabled':item.disabled,'active':value==item[value_key]}" class="option-item"
					@click="itemClick(item)">{{item[label_key]}}</view>
				<!-- 展示下拉项列表 结束 -->

				<!-- 下拉列表为空 开始 -->
				<view v-if="options.length==0" class="option-no-data">无数据</view>
				<!-- 下拉列表为空 结束 -->
			</scroll-view>
			<text class="triangle"></text>
		</view>
		<!-- 弹出的下拉区域 结束 -->
	</view>
</template>

<script>
	export default {
		data() {
			return {
				show: false,
				left: 0,

			}
		},
		props: {
			value: {
				type: [String, Number],
				default: ""
			},
			options: {
				type: Array,
				default: function() {
					return []
				}
			},
			value_key: {
				type: String,
				default: "value"
			},
			label_key: {
				type: String,
				default: "label"
			},
			disabled: {
				type: Boolean,
				default: false
			}
		},
		model: {
			prop: 'value',
			event: "valChange"
		},
		methods: {
			//点击选中选项
			itemClick(item) {
				if (item.disabled) return

				//关闭
				console.log(222);
				this.show = false
				//修改v-model的值
				this.$emit('valChange', item[this.value_key])
				//将事件通知父组件
				this.$emit('change', item[this.value_key])
			},
			//展开选项
			openOptions() {
				console.log(111);
				if (!this.disabled) {
					this.show = true
				}
			}
		},
		computed: {
			showLabel() {
				var index = this.options.findIndex(item => {
					return item[this.value_key] == this.value
				})
				if (index != -1) {
					return this.options[index][this.label_key]
				} else if (!this.value) {
					return "全部"
				} else {
					return this.value
				}
			}
		}
	}
</script>

<style scoped>
	/* 引入字体图标 */
	/* @import './iconfont.css'; */

	.ep-picker-box {
		/* width:100%; */
		/* box-sizing: border-box; */
		position: relative;
		display: flex;
		align-items: center;
		font-size: 24rpx;
		color: #FFFFFF;
		width: 130rpx;
		height: 48rpx;
		border-radius: 24rpx 24rpx 24rpx 24rpx;
		border: 2rpx solid #FFFFFF;
	}

	.ep-mask-box {
		position: fixed;
		z-index: 999;
		top: 0;
		right: 0;
		left: 0;
		bottom: 0;
		background: none;
	}

	.ep-input-box {

		border-radius: 4px;
		padding-left: 10px;
		position: relative;
		cursor: pointer;
		width: 130rpx;
	}

	/* 整个下拉组件禁用样式 */
	.ep-input-box.disabled {
		cursor: not-allowed;
		background-color: yellow;
		color: #999;
		border-bottom: 1px solid #000;
	}

	/* 展开收起箭头样式 */
	.ep-input-box .iconfont {
		position: absolute;
		top: 50%;
		right: 5px;
		font-size: 20px;
		transform: translateY(-50%);
		color: #B8B8B8;
	}

	/* 下拉容器样式 外层 */
	.ep-picker-content-wrap {

		width: 100%;
		position: absolute;
		top: 55rpx;
		left: 0;
		z-index: 9999;
		padding-top: 6px;
	}

	/* 下拉容器样式 内层 */
	.ep-picker-content-wrap .ep-picker-content {
		background-color: #fff;
		color: #999;
		padding: 3px 0;
		box-shadow: 0 0 20px 5px rgb(0 0 0 / 30%);
		border-radius: 5px;
		max-height: 181px;

	}

	/* 下拉项通用样式 */
	.ep-picker-content-wrap .ep-picker-content .option-item {
		padding: 16rpx 8rpx 10rpx;

		font-size: 20rpx;
		cursor: pointer;
		border-bottom: 1rpx solid #DFDDDD;
	}

	.ep-picker-content-wrap .ep-picker-content .option-item:last-child {
		border-bottom: none;
	}

	/* 无下拉项数据时样式 */
	.ep-picker-content-wrap .ep-picker-content .option-no-data {
		padding: 8px 18px;
		cursor: text;
		color: #999;
		text-align: center;
	}

	/* 鼠标移入下拉项样式 */
	.ep-picker-content-wrap .ep-picker-content .option-item:hover {
		background-color: #f5f7fa;
	}

	/* 已选中的下拉项样式 */
	.ep-picker-content-wrap .ep-picker-content .option-item.active {
		/* color: #007AFF; */
	}

	/* 禁用的下拉项样式 */
	.ep-picker-content-wrap .ep-picker-content .option-item.disabled {
		color: #c0c4cc;
		border-bottom: 1px solid #000;
	}

	.ep-picker-content-wrap .ep-picker-content .option-item.disabled:hover {
		cursor: not-allowed;
	}

	/* 下拉容器指示箭头样式 */
	.ep-picker-content-wrap .triangle {
		width: 0;
		height: 0;
		border-top: 6px solid rgba(0, 0, 0, 0);
		border-right: 6px solid rgba(0, 0, 0, 0);
		border-bottom: 6px solid #fff;
		border-left: 6px solid rgba(0, 0, 0, 0);
		position: absolute;
		top: -6px;
		left: 50%;
		transform: translateX(-50%);
		box-sizing: content-box;
	}
</style>

使用

	<view style="display: flex;justify-content: center;padding:10px;">
					<epselect :disabled="false" v-model="select" :options="options" @change="change"></epselect>
				</view>




	data() {
			return {
				select:"",
				options: [{
					value: "1",
					label: "全部"
				}, {
					value: "2",
					label: "年"
				}, {
					value: "3",
					label: "月",
				}],
}
}

博主地址附上https://www.cnblogs.com/OrochiZ-/p/15910440.html文章来源地址https://www.toymoban.com/news/detail-843417.html

到了这里,关于uniapp微信小程序 --下拉菜单的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WebStorm开发uni-app ,用vue2实现手机APP(apk) + 微信小程序多端项目开发方案 webstorm开发的uniapp + hbuilderx进行app 小程序打包

    我们主要分析了如下小程序开发框架,主要包括: 框架 技术栈 案例 微信小程序 支付宝小程序 百度小程序 头条小程序 H5 App uni-app Vue 丰富 ⭕ ⭕️ ⭕️ ⭕ ⭕️ ⭕ Taro React 丰富 ⭕ ⭕ ⭕ ⭕ ⭕ ⭕ wepy Vue 丰富 ⭕ ❌ ❌ ❌ ❌ ❌ mpvue Vue 丰富 ⭕ ❌ ❌ ❌ ⭕️ ❌  首先,就要排

    2024年02月11日
    浏览(75)
  • 微信小程序uni-app

    小程序 是一种不需要下载、安装即可使用的应用,它实现了应用触手可及的梦想,用户扫一扫或者搜一下就能打开应用,也实现了用完即走的理念,用户不用安装太多应用,应用随处可用,但又无须安装卸载。 微信开发文档 1、工作原理 网页开发,渲染线程和脚本是互斥的

    2024年02月10日
    浏览(123)
  • 微信小程序授权(uni-app)

    概述 为了避免重复开发,自己封装了一个通用用户授权回调方法,只需要传入需要授权的scope,权限中文描述、回调函数,就可以实现一整套小程序是否授权、打开授权设置,调用后续操作函数的工作 功能 可以根据自己的实际应用进行微调 目前使用的uni-app版本,可以根据自

    2024年02月16日
    浏览(86)
  • 使用uni-ui 实现下拉搜索框(uniapp+uni-ui+vue3 开发微信小程序)

    需求:输入框中输入内容--远端搜索匹配的选项--展示选项(可点击选择选项) 代码实现 htm:(一个输入框input + list) js: css

    2024年01月24日
    浏览(55)
  • uni-app(微信小程序)获取当前位置uni.getLocation

     1、微信公众平台  开发  开发管理   2、开通之后到项目文件    3、下载腾讯地图插件并引入到文件中    

    2024年02月11日
    浏览(67)
  • uni-app微信小程序使用echarts

    前言:本来是使用的ucharts,但因为无法监听图例点击交互,满足不了需求,所以只能放弃。 首先,下载echart组件。可以先随便建个文件夹,然后 npm init。接着下载依赖 然后找到 node_modulesmpvue-echarts下的文件,如图 只留下src,其他的删掉(没有用到)。然后复制 mpvue-echart

    2024年02月10日
    浏览(74)
  • uni-app 微信小程序 激励视频广告

    封装激励视频-Ad.js 调用上面写的方法:

    2024年02月12日
    浏览(83)
  • 【uni-app微信小程序】实现支付功能

    实现微信支付功能需要在小程序后台配置支付相关信息,并且在前端代码中调用微信支付API进行支付操作。好的, uni-app微信小程序实现支付功能整体流程 大致如下: 注册微信公众平台,并完成开发者资质认证; 在微信商户平台注册商户账号,并完成商户资质认证; 在商户

    2024年02月13日
    浏览(99)
  • 语法速通 uni-app随笔【uni-app】【微信小程序】【vue】

    其中, pages 目录/ index 目录【必有】: index.js 编写业务逻辑 【初始数据,生命周期函数】 index.json 编写配置 index.wxml 编写模板 【可理解为本页html】 index.wxss 【可理解为本页css】 直接输入敲回车,连尖括号都不需要就可以标签补全 1)初始数据写死 在 index.wxml 引入变

    2024年02月12日
    浏览(174)
  • 前端Uni-app开发微信小程序|微信小程序手机商城

    作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库

    2024年02月12日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包