当前位置:   article > 正文

Vue项目中修改 element-ui 的dialog弹框事件,实现dialog背景模糊效果_vue如何模糊背景

vue如何模糊背景

先看效果图:

一、需求

当点击出现dialog弹框时,背景模糊处理。

二、实现

实现的思路是,修改dialog弹出事件和关闭事件,在这两个事件里面给我的背景添加模糊处理和去除模糊。

说明:我的是全局修改,即所有的dialog都会受到影响。需要部分修改的根据情况做局部处理。

1、先在全局公共的css中添加一个模糊处理的样式,如下代码:2、我的element是按需引入,在引入的文件修改Dialog的弹出和关闭事件。如下代码: 

  1. // 模糊处理的css
  2. .allblur {
  3. -webkit-filter: blur(2px);
  4. -moz-filter: blur(2px);
  5. -ms-filter: blur(2px);
  6. filter: blur(2px);
  7. zoom: 1;
  8. }
  9. // v-modal修改的弹出框是背景颜色的
  10. .v-modal {
  11.   background-color: rgba(0,0,0,0.3) !important;
  12. }

2、我的element是按需引入,在引入的文件修改Dialog的弹出和关闭事件。如下代码:  

  1. import Vue from 'vue'
  2. import {
  3. Form,
  4. Input,
  5. Checkbox,
  6. ...
  7. ...
  8. Dialog
  9. }
  10. // 截取dialog打开方法
  11. const afterEnter = function() {
  12. // 在body上加入classname为allblur,即实现背景模糊
  13. document.getElementById('app').className = 'allblur'
  14. // 下面是原有的代码,不做修改
  15. this.$emit('opened')
  16. }
  17. Dialog.methods.afterEnter = afterEnter
  18. // 截取dialog关闭方法
  19. const afterLeave = function() {
  20. // 去掉body上添加的classname,即实现去除背景模糊
  21. document.getElementById('app').className = ''
  22. // 下面是原有的代码,不做修改
  23. this.$emit('closed')
  24. }
  25. Dialog.methods.afterLeave = afterLeave
  26. const element = {
  27. install: function() {
  28. Vue.use(Input)
  29. Vue.use(Form)
  30. Vue.use(Checkbox)
  31. ...
  32. ...
  33. Vue.use(Dialog)
  34. }
  35. }
  36. export default element

 3、在main.js中引入此文件即可

  1. import Vue from 'vue'
  2. // 按需引入 element-ui组件
  3. import 'element-ui/lib/theme-chalk/index.css'
  4. import element from './element/index.js'
  5. Vue.use(element)

注:如果dialog上用了v-if会导致此功能失效

实现的逻辑在上面的代码里已经说明了,应该还有其他css实现,如果有其他棒的方法,希望可以分享学习下。

 

 

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