当前位置:首页 > VUE

vue 实现遮罩

2026-01-07 23:02:12VUE

Vue 实现遮罩层的方法

使用固定定位和透明背景

在Vue中实现遮罩层可以通过CSS固定定位结合透明背景色完成。创建一个全屏遮罩组件,利用position: fixed覆盖整个视窗。

<template>
  <div class="mask" v-show="visible" @click="handleClose"></div>
</template>

<script>
export default {
  props: {
    visible: Boolean
  },
  methods: {
    handleClose() {
      this.$emit('close')
    }
  }
}
</script>

<style scoped>
.mask {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(0, 0, 0, 0.5);
  z-index: 1000;
}
</style>

结合transition实现动画效果

通过Vue的transition组件可以给遮罩层添加淡入淡出效果,提升用户体验。

<template>
  <transition name="fade">
    <div class="mask" v-show="visible"></div>
  </transition>
</template>

<style scoped>
.fade-enter-active, .fade-leave-active {
  transition: opacity 0.3s;
}
.fade-enter, .fade-leave-to {
  opacity: 0;
}
</style>

动态控制遮罩层显示

在父组件中通过v-model控制遮罩层的显示状态,实现交互逻辑。

<template>
  <button @click="showMask = true">显示遮罩</button>
  <MaskLayer v-model="showMask" />
</template>

<script>
import MaskLayer from './MaskLayer.vue'

export default {
  components: { MaskLayer },
  data() {
    return {
      showMask: false
    }
  }
}
</script>

遮罩层内容定制

扩展遮罩层组件使其可以包含自定义内容,通过插槽实现内容灵活配置。

<template>
  <div class="mask" v-show="visible">
    <div class="mask-content">
      <slot></slot>
    </div>
  </div>
</template>

<style scoped>
.mask-content {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  background: white;
  padding: 20px;
  border-radius: 4px;
}
</style>

防止背景滚动

当遮罩层显示时,通常需要禁止页面滚动,可以通过动态修改body样式实现。

watch: {
  visible(newVal) {
    if (newVal) {
      document.body.style.overflow = 'hidden'
    } else {
      document.body.style.overflow = ''
    }
  }
}

vue 实现遮罩

标签: vue
分享给朋友:

相关文章

vue分类实现

vue分类实现

Vue分类实现方法 在Vue中实现分类功能通常涉及数据分组、动态渲染和交互逻辑。以下是几种常见的实现方式: 基于计算属性的分类 通过计算属性对原始数据进行分组处理,适合静态或少量数据分类: c…

vue实现图册

vue实现图册

Vue实现图册功能 在Vue中实现图册功能通常涉及图片展示、切换、缩放等交互效果。以下是常见的实现方法和关键代码示例: 基础图册组件结构 使用Vue单文件组件构建基础结构: <templ…

vue实现水印

vue实现水印

Vue 实现水印的方法 使用 CSS 背景图 通过 CSS 的 background-image 和 background-repeat 属性实现水印效果。创建一个包含水印文本的 Canvas,将其转…

vue实现getapp

vue实现getapp

Vue 中实现全局获取应用实例的方法 在 Vue 3 中,可以通过 getCurrentInstance 方法获取当前组件实例,但需要明确其使用场景和限制。以下是具体实现方式: 方法一:通过 ge…

vue搜索实现

vue搜索实现

Vue 搜索功能实现方法 基于计算属性的搜索 在 Vue 中可以通过计算属性实现简单的搜索功能。这种方式适合小型数据集,利用 JavaScript 的 filter 方法进行筛选。 data() {…

vue轮播实现

vue轮播实现

Vue 轮播实现方法 使用第三方库(推荐) 安装 swiper 或 vue-awesome-swiper 库,快速实现功能丰富的轮播效果。 以 vue-awesome-swiper 为例: n…