赞
踩
【问题】: 在elementUI 中,el-dialog的内容比较多,出现滚动条,且内容包含input输入框、select下拉框、时间选择器、cascader级联选择器等,在点开select下拉选择框后并向下滚动鼠标,会出现下拉框跑出el-dialog的区域的情况(有可能离el-dialog的区域很远),造成页面的展示效果混乱。
【解决方案】:我们可以在鼠标滚动的时候,让select弹框隐藏,这样就可以解决select 下拉框在el-dialog外面的问题了。
1. 创建util文件夹,下面创建scroll.js文件
- // 这是scroll.js文件的代码
-
- let mouseUp = null;
- let mouseDown = null;
-
- // 隐藏popper
- export const hidePopper = function (cls='.el-popper') {
- let dom = document.querySelector(cls);
- if(!dom){
- return;
- }
- // 创建鼠标事件
- if (!mouseUp || !mouseDown) {
- console.log('-----create events-----');
- mouseUp = new MouseEvent('mouseup', {
- 'view': window,
- 'bubbles': true,
- 'cancelable': true
- });
- mouseDown = new MouseEvent('mousedown', {
- 'view': window,
- 'bubbles': true,
- 'cancelable': true
- });
- }
- // 顺序触发mouseDown、mouseUp
- dom.dispatchEvent(mouseDown);
- dom.dispatchEvent(mouseUp);
- }
-
- // 清除鼠标事件
- export const delEvents = function () {
- console.log('-----delete events-----');
- mouseUp = null;
- mouseDown = null;
- }
-
- /**
- * 滚动时隐藏
- * @param contain 滚动监听的容器
- * @param cls 隐藏的元素class:如下拉、时间弹框等
- */
- export const scrollHide = function (contain,cls) {
- // 先移除
- if(mouseUp||mouseDown){
- delEvents();
- }
- // 再绑定
- contain.onscroll = function () {
- hidePopper(cls);
- }
- }
2. 在自己封装的el-dialog的组件里 引入scroll.js,再调用scrollHide方法
import { scrollHide } from "@/utils/scroll.js";
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。