使用 el-dropdown 实现 el-select 的效果
一:效果
效果1:点击el-input后,展开 下拉菜单, 选择一个选项后,在el-input组件显示被选择的数据
效果2: el-dropdown-menu 有一定高度,超过scroll 滚动
效果3:再次打开高亮被选择的数据
效果4:打开下拉选项后,滚动条定位到被选择item的位置
二:实现方式:
效果1:点击el-input后,展开 下拉菜单, 选择一个选项后,在el-input组件显示被选择的数据
①.el-dropdown 组件绑定 @command事件
②.el-dropdown-item 组件绑定 command 属性
③.el-dropdown 组件绑定 @command事件方法中,修改el-input 中v-model 所绑定的值
效果2:el-dropdown-menu 有一定高度,超过则scroll 滚动
①.给el-dropdown-menu 设置样式
效果3: 再次打开高亮被选择的数据
①.定义被选择的css样式
②.判断被选择的item,则给予 高亮的样式
效果4:打开下拉选项后,滚动条定位到被选择item的位置
①.思路:当打开el-dropdown-menu 组件时,判断 被选择的item是第几个(index),计算出每个item 的高度,然后使用el-dropdown-menu 组件 的scrollTop属性达到定位的目的
②.可以使用 el-dropdown 组件的@visible-change事件,在显示/隐藏时触发的事件
③.这里有一个难点是:在visible-change触发过程中,el-dropdown-menu组件和 每个el-dropdown-item的高度都是0,因为display:none。解决办法是:当visible-change 事件完成之后,再去计算高度

onVisibleChange(val){ new Promise((resolve,reject) => { if(val){ } resolve() }).then(()=>{ // 等待onVisibleChange 事件完成后再去定位和计算 const index_num = this.icons.indexOf(this.menu.front_end_icon) //计算被选中的item在整个items的序号 const list = document.getElementsByName("dropdown_menu_id")[0];//找到el-dropdown-menu组件 const targetLi = document.getElementById(this.menu.front_end_icon);// 找到被选中item的组件 const nodeHeight = targetLi.scrollHeight; // 计算每个item的高度 list.scrollTop = nodeHeight*index_num; // el-dropdown-menu组件进行定位 } ) },
④.给el-input 框加上 向上/向下的图标
⑤.可以使用suffix-icon属性
⑥. input_icon_bool 属性在 @visible-change 的值(true/false)赋值
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2019-04-03 django中使用ajax 请求post时出现403 错误(接口测试post请求时也会出现403)