uni-app:实现简易自定义下拉列表

news2024/9/24 23:28:35

效果 

代码

<template>
  <view>
    <view class="dropdown-trigger" @tap="showDropdown">
      {{ selectedItem }}
    </view>
    <view class="dropdown-list" v-if="showList">
      <view class="dropdown-item" v-for="item in listData" @tap="selectItem(item)" :key="item">
        {{ item }}
      </view>
    </view>
  </view>
</template>

<script>
export default {
	data() {
	  return {
	    showList: false, // 控制下拉列表的显示和隐藏
	    listData: ['选项1', '选项2', '选项3'], // 下拉列表的数据
	    selectedItem: '选项1' // 选中的下拉列表项
	  }
	},
  methods: {
    showDropdown() {
      this.showList = !this.showList; // 切换下拉列表的显示状态
    },  
    selectItem(item) {
      this.selectedItem = item; // 选择下拉列表项
      this.showList = false; // 隐藏下拉列表
    }
  }
};
</script>
<style>
	.dropdown-trigger{
		border:1px solid black;
		width: 250rpx;
	}
	.dropdown-list{
		border:1px solid black;
		width: 250rpx;
	}
</style>

扩展-下拉列表位置

如果下拉列表下方有内容,当下拉列表的内容出现时,会造成下拉列表占据一定的高度,将内容挤压至下拉列表的下方(正常是下拉列表的内容可以覆盖内容,而不占据一定高度)

效果

被挤压的效果

 正常效果:由于没设置背景色,现在看着就是这样的效果

更换背景色就展示出希望得到的效果

核心代码

一、在需要出现下拉列表的元素上设置相对定位(position: relative),用于作为下拉列表的参考位置。

.dropdown-trigger { position: relative; }

二、下拉列表使用绝对定位(position: absolute),并设置top或bottom属性来控制其在参考元素上方或下方的位置。

.dropdown-list { position: absolute;}

完整代码

<template>
	<view>
		<view class="dropdown-trigger" @tap="showDropdown">
			{{ selectedItem }}
		</view>
		<view class="dropdown-list" v-if="showList">
			<view class="dropdown-item" v-for="item in listData" @tap="selectItem(item)" :key="item">
				{{ item }}
			</view>
		</view>
		<view>
			我是内容
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				showList: false, // 控制下拉列表的显示和隐藏
				listData: ['选项1', '选项2', '选项3'], // 下拉列表的数据
				selectedItem: '选项1' // 选中的下拉列表项
			}
		},
		methods: {
			showDropdown() {
				this.showList = !this.showList; // 切换下拉列表的显示状态
			},
			selectItem(item) {
				this.selectedItem = item; // 选择下拉列表项
				this.showList = false; // 隐藏下拉列表
			}
		}
	};
</script>
<style>
	.dropdown-trigger {
		border: 1px solid black;
		width: 250rpx;
		position:relative;
	}

	.dropdown-list {
		border: 1px solid black;
		width: 250rpx;
		position:absolute;
		background-color: aquamarine;
	}
</style>

扩展-下拉列表选中颜色改变

效果

核心代码

三目运算给出样式

:class="{selected: selectedItem === item}"

完整代码

<template>
	<view>
		<view class="dropdown-trigger" @tap="showDropdown">
			<text>{{ selectedItem }}</text>
		</view>
		<view class="dropdown-list" v-if="showList">
			<view class="dropdown-item" v-for="item in listData" @tap="selectItem(item)" :key="item" :class="{selected: selectedItem === item}">
				{{ item }}
			</view>
		</view>
		<view>
			我是内容
		</view>
	</view>
</template>

<script>
	export default {
		data() {
			return {
				showList: false, // 控制下拉列表的显示和隐藏
				listData: ['选项1', '选项2', '选项3'], // 下拉列表的数据
				selectedItem: '选项1' // 选中的下拉列表项
			}
		},
		methods: {
			showDropdown() {
				this.showList = !this.showList; // 切换下拉列表的显示状态
			},
			selectItem(item) {
				this.selectedItem = item; // 选择下拉列表项
				this.showList = false; // 隐藏下拉列表
			}
		}
	};
</script>
<style>
	.dropdown-trigger {
		border: 1px solid black;
		width: 250rpx;
		position:relative;
	}

	.dropdown-list {
		border: 1px solid black;
		width: 250rpx;
		position:absolute;
		background-color: aquamarine;
	}
	/* 自定义选中项的样式 */
	.selected {
	  color: red;
	  font-weight: bold;
	}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1079328.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【面试题精讲】finally 中的代码一定会执行吗?

文章目录 finally 块的作用finally 中的代码一定会执行吗&#xff1f;1. System.exit() 导致 JVM 终止2. 无限循环或死锁3. 程序被强制终止 示例代码演示示例 1&#xff1a;正常情况下执行 finally 块示例 2&#xff1a;发生异常时执行 finally 块示例 3&#xff1a;System.exi…

ACL访问控制列表的解析和配置

ACL的解析 个人简介 ACL - Access Control List 访问控制列表 策略 ------行为 允许/拒绝 ACL --包含两种 标准ACL 扩展ACL 标准ACL&#xff1a;只能针对源IP地址做限制 针对路由条目的限制 -路由策略 思科编号&#xff1a;1-99之间或1300-1999 扩展ACL&#xff1a;针对…

SLAM从入门到精通(3d 点云数据访问)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 3d 点云设备现在汽车上用的很多。之前3d lidar这种高端传感器&#xff0c;只能被少部分智能汽车使用。后来很多国产厂家也开始研发3d lidar之后&am…

从0开始微信小程序开发

项目构成 小程序页面组成部分 WXML模板 WXML和HTML的区别 分别对应的是布局&#xff0c;文本&#xff0c;图像&#xff0c;导航跳转 WXSS 用来美化页面结构 view默认占满一行

数据治理的核心是什么?_光点科技

数据治理是当今数字化时代中企业管理的关键组成部分。在信息爆炸的时代&#xff0c;企业积累了大量的数据&#xff0c;这些数据不仅是企业宝贵的资产&#xff0c;也是推动业务决策和创新的重要驱动力。数据治理的核心在于建立有效的框架和流程&#xff0c;以确保数据的质量、安…

计算机竞赛 题目:基于深度学习的图像风格迁移 - [ 卷积神经网络 机器视觉 ]

文章目录 0 简介1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 简介 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于深度学习卷积神经网络的花卉识别 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c…

基于ChatGPT+词向量/词嵌入实现相似商品推荐

最近一个项目有个业务场景是相似商品推荐&#xff0c;给一个商品描述(比如 WIENER A/B 7IN 5/LB FZN )&#xff0c;系统给出商品库中最相似的TOP 5种商品&#xff0c;这种单纯的推荐系统用词向量就可以实现&#xff0c;不过&#xff0c;这个项目特点是商品库巨大&#xff0c;有…

Docker与Serverless计算的集成: Docker容器如何与Serverless计算结合。

文章目录 1. Docker容器的可移植性2. Serverless计算的自动伸缩性3. 使用Serverless与Docker容器a. 自托管Serverless平台b. 使用容器服务 4. 使用案例&#xff1a;图像处理服务5. 结论 &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &#x1f389;…

MPP 架构在 OLAP 数据库的运用

MPP 架构&#xff1a; MPP 架构的产品&#xff1a; Impala ClickHouse Druid Doris 很多 OLAP 引擎都采用了 MPP 架构 批处理系统 - 使用场景分钟级、小时级以上的任务&#xff0c;目前很多大型互联网公司都大规模运行这样的系统&#xff0c;稳定可靠&#xff0c;低成本。…

IntelliJ IDEA 2023.1 版本可以安装了

Maven 的导入时间更加快了。 收到的有邮件提醒安装。 安装后的版本&#xff0c;其实就是升级下&#xff0c;并没有什么主要改变。 IntelliJ IDEA 2023.1 版本可以安装了 - 软件技术 - OSSEZMaven 的导入时间更加快了。 收到的有邮件提醒安装。 安装后的版本&#xff0c;其实就是…

电脑屏幕怎么录制?5 个最佳免费录屏软件

您是否想使用网络摄像头录制优酷视频、抖音直播或在线课程等项目&#xff0c;但完全不知道如何开始&#xff1f; 不用担心。有很多软件选项可以帮助您。虽然每一款都有不同的功能&#xff0c;但它们都能够录制网络摄像头并输出精美的高质量视频。 以下是我们精选的最佳作品。…

京东获取推荐商品列表 API

item_recommend-获取推荐商品列表 请求参数 请求参数&#xff1a;type 参数说明&#xff1a;type:推荐类型 进入API测试页 响应参数 Version: Date: 名称类型必须示例值描述 items items[]0获取推荐商品列表 num_iid Bigint010021415166448宝贝ID detail_url String0http…

【广州华锐互动】灭火器使用VR教学系统应用于高校消防演练有什么好处?

在科技发展的大潮中&#xff0c;虚拟现实&#xff08;VR&#xff09;技术以其独特的沉浸式体验赢得了各个领域的青睐&#xff0c;其中包括教育和培训。在高校消防演练中&#xff0c;VR也成为了一种新的消防教育方式。 由广州华锐互动开发的VR消防演练系统&#xff0c;就包含了校…

kali安装dvwa

引言 因为工作原因&#xff0c;正在参加安全众测&#xff0c;我又是初学者&#xff0c;自然就绕不开dvwa。我就想在kali上面配置dvwa&#xff0c;不想再windows里面配&#xff0c;毕竟这样显得自己更专业。 dvwa是什么&#xff1f;DVWA全称为Damn Vulnerable Web Application…

五分钟掌握NineData:新手任务速成指南

NineData 以其强大的功能和简易的操作&#xff0c;成为众多企业以及个人用户的首选。然而如果您首次使用 NineData 控制台&#xff0c;可能会遇到一些挑战&#xff1a; 不知道从何下手 &#xff1a;新用户可能会迷失在界面和操作中&#xff0c;不清楚从哪里开始、如何添加数据…

华为云Stack的学习(九)

十、华为云Stack灾备服务介绍 1.云硬盘备份VBS 云硬盘备份服务&#xff08;VBS&#xff0c;Volume Backup Service&#xff09;可为云硬盘&#xff08;EVS&#xff0c;Elastic Volume Service&#xff09;创建备份&#xff0c;利用备份数据恢复云硬盘&#xff0c;最大限度保障…

Rule-Engine-Starter V1.0.0

一个轻量级的规则引擎、搜索引擎&#xff0c;让条件匹配简单、优雅。 GIT地址 https://gitcode.cosmoplat.com/15011240224/rule-engine-starter 介绍 Rule-Engine-Starter 是一个轻量级规则引擎&#xff0c;V1.0.0主要解决条件匹配问题。比如飞书文档&#xff0c;每个文档都…

API接口安全运营研究(内附官方开发平台api接口接入方式)

摘 要 根据当前API技术发展的趋势&#xff0c;从实际应用中发生的安全事件出发&#xff0c;分析并讨论相关API安全运营问题。从风险角度阐述了API接口安全存在的问题&#xff0c;探讨了API检测技术在安全运营中起到的作用&#xff0c;同时针对API安全运营实践&#xff0c;提出…

C++语言实现网络爬虫详细代码

当然&#xff01;下面是一个用C语言实现的基本网络爬虫的详细代码示例&#xff1a; #include <iostream> #include <string> #include <curl/curl.h> size_t writeCallback(void* contents, size_t size, size_t nmemb, std::string* output) {size_t totalS…

ElementUI增删改的实现及表单验证

文章目录 一、准备二、添加功能2.1 新增添加按钮2.2 添加弹出框2.3 data中添加内容2.4 methods中添加相关方法 三、编辑功能3.1 表格中添加编辑和删除按钮3.2 methods中添加方法3.3 修改methods中clear方法3.4 修改methods中的handleSubmit方法 四、删除书籍功能4.1 往methods的…