当前位置:   article > 正文

解决element UI中 select下拉框 el-select-dropdown el-popper超出el-dialog弹框的问题

el-select-dropdown

【问题】: 在elementUI 中,el-dialog的内容比较多,出现滚动条,且内容包含input输入框、select下拉框、时间选择器、cascader级联选择器等,在点开select下拉选择框后并向下滚动鼠标,会出现下拉框跑出el-dialog的区域的情况(有可能离el-dialog的区域很远),造成页面的展示效果混乱。

 

 

 【解决方案】:我们可以在鼠标滚动的时候,让select弹框隐藏,这样就可以解决select 下拉框在el-dialog外面的问题了。

1. 创建util文件夹,下面创建scroll.js文件

  1. // 这是scroll.js文件的代码
  2. let mouseUp = null;
  3. let mouseDown = null;
  4. // 隐藏popper
  5. export const hidePopper = function (cls='.el-popper') {
  6. let dom = document.querySelector(cls);
  7. if(!dom){
  8. return;
  9. }
  10. // 创建鼠标事件
  11. if (!mouseUp || !mouseDown) {
  12. console.log('-----create events-----');
  13. mouseUp = new MouseEvent('mouseup', {
  14. 'view': window,
  15. 'bubbles': true,
  16. 'cancelable': true
  17. });
  18. mouseDown = new MouseEvent('mousedown', {
  19. 'view': window,
  20. 'bubbles': true,
  21. 'cancelable': true
  22. });
  23. }
  24. // 顺序触发mouseDown、mouseUp
  25. dom.dispatchEvent(mouseDown);
  26. dom.dispatchEvent(mouseUp);
  27. }
  28. // 清除鼠标事件
  29. export const delEvents = function () {
  30. console.log('-----delete events-----');
  31. mouseUp = null;
  32. mouseDown = null;
  33. }
  34. /**
  35. * 滚动时隐藏
  36. * @param contain 滚动监听的容器
  37. * @param cls 隐藏的元素class:如下拉、时间弹框等
  38. */
  39. export const scrollHide = function (contain,cls) {
  40. // 先移除
  41. if(mouseUp||mouseDown){
  42. delEvents();
  43. }
  44. // 再绑定
  45. contain.onscroll = function () {
  46. hidePopper(cls);
  47. }
  48. }

2. 在自己封装的el-dialog的组件里 引入scroll.js,再调用scrollHide方法

import { scrollHide } from "@/utils/scroll.js";

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/104828
推荐阅读
相关标签
  

闽ICP备14008679号