BillBie

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

使用 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组件进行定位
          }

        )

      },
onVisibleChange方法
复制代码

 

      ④.给el-input 框加上 向上/向下的图标

      

 

      ⑤.可以使用suffix-icon属性

        

 

      ⑥. input_icon_bool 属性在 @visible-change 的值(true/false)赋值

        

 

 

    

 

 

 

       

 

 

     

 

 

 

    

    

posted on   BillBie  阅读(3591)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
历史上的今天:
2019-04-03 django中使用ajax 请求post时出现403 错误(接口测试post请求时也会出现403)
点击右上角即可分享
微信分享提示