vue elementui select下拉库组件鼠标移出时隐藏下拉框

方案:

select 监听 mouseleave事件,当鼠标离开时通过唯一标识ref设置select 下拉框隐藏,并做失焦

html 复制代码
<el-select 
v-model="value" 
:popper-append-to-body="false"   
class="select_drop_inner" size="small"
placeholder="支持模型体验" 
ref="selectRef" 
@mouseleave.native="closeSelect">
  <el-option label="xxx" value="xxx"></el-option>
  <el-option label="xxx" value="xxx"></el-option>
</el-select>

popper-append-to-body 属性是设置弹出框的位置的,设置为false比较方便我们通过当前select去获取对应的下拉框元素,如果设置为true的话对应下拉框元素会在最外层,不方便拿到并设置

但是设置当前属性也会导致出现下拉框被盖住不显示的样式问题

如果有这样的样式问题可以给select设置单独的class,然后设置以下的scss

css 复制代码
.select_drop_inner {
    padding-bottom: 0.2rem;  //为下方的下拉框保留位置(20px)
    position: relative;
    top: 0.1rem; //兼容之前的样式,可以不加
    .el-select__tags {
        top: calc(50% - 0.1rem);
    }
    .el-select-dropdown {
        position: fixed !important;  //主要是修改下拉框为固定定位来解决不显示问题
        top: 3.2rem !important;  //上方的高度需自己计算(相关整个页面视口)

    }
}

mouseleave事件方法中做操作

javascript 复制代码
closeSelect(){
   // 注意 selectRef 要和 ref="selectRef" 对应
   this.$refs.selectRef.$el.querySelector('.el-select-dropdown').style.display = 'none';
   // 隐藏下拉框后 同时 使 input 失去焦点
   this.$refs.selectRef.blur()
 },

参考至 https://blog.csdn.net/Z18834071903/article/details/138799731

相关推荐
家里有只小肥猫19 分钟前
uniApp小程序保存canvas图片
前端·小程序·uni-app
前端大全21 分钟前
Chrome 推出全新的 DOM API,彻底革新 DOM 操作!
前端·chrome
冴羽41 分钟前
Svelte 最新中文文档教程(16)—— Context(上下文)
前端·javascript·svelte
前端小臻1 小时前
关于css中bfc的理解
前端·css·bfc
白嫖不白嫖1 小时前
网页版的俄罗斯方块
前端·javascript·css
HappyAcmen1 小时前
关于Flutter前端面试题及其答案解析
前端·flutter
顾比魁1 小时前
pikachu之CSRF防御:给你的请求加上“网络身份证”
前端·网络·网络安全·csrf
林的快手1 小时前
CSS文本属性
前端·javascript·css·chrome·node.js·css3·html5
肥肠可耐的西西公主2 小时前
前端(AJAX)学习笔记(CLASS 2):图书管理案例以及图片上传
前端·笔记·学习
大胖丫2 小时前
vue 学习-vite api.js
开发语言·前端·javascript