我是靠谱客的博主 专一衬衫,最近开发中收集的这篇文章主要介绍vue禁止鼠标滚轮事件(禁止弹窗后面的遮罩层下的背景滚动)代码如下,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

vue禁止鼠标滚轮事件(禁止弹窗后面的遮罩层下的背景滚动)

  • 代码如下

代码如下

原理: 监听visible的变化,然后通过禁止、解除鼠标滚轮事件来禁止背景滚动

<<template>
		<div class="dialog-wrapper" v-show="visible" @click.self="close">
				<div class="dialog target">
					<slot></slot>
				</div>
		</div>
</template>

<script>
  export default {
    name: "ModalDialog",
    props: {
      visible: {
        type: Boolean,
        default: false
      }
    },
    watch: {
      visible: {
        handler(newVal) {
          if(!newVal) {
            // 解除禁止滚动
	          this.$nextTick(() => {
              document.removeEventListener('mousewheel', this.mousewheelHandler, {passive: false})
            })

            this.$emit('update:visible', false)
          } else {
            this.$emit('update:visible', true)
            // 每次弹出弹窗,让遮罩层下面的页面不能滚动
            this.$nextTick(() => {
              document.addEventListener('mousewheel', this.mousewheelHandler, {passive: false})
            })
          }
        },
        immediate: true
      }
    },
    methods: {
      mousewheelHandler (e) {
        e.preventDefault()
      },
      close() {
        this.$emit('update:visible', false)
      }
    },
  }
</script>

<style lang="scss" scoped>
	.dialog-wrapper {
		position: fixed;
		top: 0;
		left: 0;
		bottom: 0;
		right: 0;
		background-color: rgba(0,0,0,.4);
		display: flex;
		justify-content: center;
		align-items: center;
		z-index: 999;
		.dialog {
			box-sizing: border-box;
			padding: 15px;
			background-color: #fff;
			border-radius: 4px;
		}
	}
</style>


最后

以上就是专一衬衫为你收集整理的vue禁止鼠标滚轮事件(禁止弹窗后面的遮罩层下的背景滚动)代码如下的全部内容,希望文章能够帮你解决vue禁止鼠标滚轮事件(禁止弹窗后面的遮罩层下的背景滚动)代码如下所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(41)

评论列表共有 0 条评论

立即
投稿
返回
顶部