基于vue3.0的遮罩

article/2025/8/29 8:53:38

前言

最近在uniapp中要写一个弹窗,弹窗好写,但是遮罩没有接触过。找到了下面这篇文章,推荐仔细阅读一下。在这篇文章的基础下,简单封装了一个遮罩。

推荐文章:论如何用Vue实现一个弹窗-一个简单的组件实现

遮罩

备注
组件名不要命名为mask,控制台会提示Do not use built-in or reserved HTML elements as component id,意思是不要将内置或保留的HTML元素用作组件id

效果
添加了一个close-on-click-modal属性,默认点击遮罩,遮罩关闭。设置为false后,点击遮罩,遮罩不关闭。

在这里插入图片描述

遮罩实现代码:

<template><div class="mask"><!-- 外层的遮罩 --><div class="mask-cover" v-if="isShow" @click="closeByMask"></div><!-- 设置动画 --><transition name="fade"><!-- 内容区 --><div class="mask-content" v-if="isShow"><!-- 插槽,放置要插入到遮罩里的内容 --><slot name="default"></slot></div></transition></div>
</template><script>
import { ref } from "vue";
export default {props: {//是否可以点击遮罩关闭,默认是closeOnClickModal: {type: Boolean,default: true,},},setup(props) {//控制遮罩的显示let isShow = ref(false);//打开遮罩,由外部进行调用let showMask = () => {isShow.value = true;};//关闭遮罩let closeMask = () => {isShow.value = false;};//通过点击遮罩关闭let closeByMask = () => {if (props.closeOnClickModal) {isShow.value = false;}};return {isShow,showMask,closeMask,closeByMask,};},
};
</script><style scoped lang="scss">
// 最外层,设置position定位
.mask {position: relative;color: #2e2c2d;font-size: 16px;
}
//遮罩,设置背景层,z-index值要足够大确保能覆盖,高度 宽度设置满 做到全屏遮罩
.mask-cover {background: rgba($color: #000000, $alpha: 0.5);position: fixed;z-index: 9999;// 设置top、left、宽高保证全屏遮罩top: 0;left: 0;height: 100%;width: 100%;
}//内容层,z-index要大于遮罩层,确保内容在遮罩上显示
.mask-content {position: fixed;top: 30%;height: 70%;z-index: 10000;
}//动画
.fade-enter-active,
.fade-leave-active {transition: opacity 0.5s ease;
}.fade-enter-from,
.fade-leave-to {opacity: 0;
}
</style>

demo代码:

<template><div><el-button type="primary" @click="openDialog">打开</el-button><yc-mask ref="maskRef" :close-on-click-modal="false"><div class="dialog"><div>我是弹窗</div><el-button type="primary" @click="closeDialog">关闭</el-button></div></yc-mask></div>
</template><script>
import { ref } from "vue";
import ycMask from "./yc-mask.vue";
export default {components: {ycMask,},setup() {//获取遮罩的实例let maskRef = ref(null);//打开弹窗let openDialog = () => {maskRef.value.showMask();};//关闭弹窗let closeDialog = () => {maskRef.value.closeMask();};return {maskRef,openDialog,closeDialog,};},
};
</script><style scoped lang="scss">
.dialog {width: 200px;height: 200px;background: #ffffff;display: flex;justify-content: center;align-items: center;
}
</style>

http://chatgpt.dhexx.cn/article/NhorAgTL.shtml

相关文章

html5 div遮罩,CSS3 遮罩属性

遮罩(Mask)和Photoshop里的蒙版效果含义一致&#xff0c;用于为指定元素建立一个覆盖在上面的遮罩层。它显示在元素之上&#xff0c;和背景效果使用起来正好相反。我们可以使用遮罩在元素上方叠加一幅图或者一个渐变效果。 遮罩、内容和背景效果的显示层次如下图所示&#xff1…

html添加遮罩

html添加遮罩的代码如下所示 使用divcss &#xff0c;加载中的图片是网上下载的动图&#xff0c;可以根据自己需要进行修改 <!DOCTYPE html> <html> <head><title>DIV CSS遮罩层</title><script language"javascript" type"t…

Android渐变遮罩

Android Studio版本&#xff1a; Android Studio Chipmunk 这篇文章介绍如何在Android中实现这样的渐变遮罩 依赖项 1.CardView 在app下的build.gradle中添加依赖&#xff0c;并且完成编译 dependencies {implementation androidx.cardview:cardview:1.0.0 } 2.两张svg图片…

Blender 利用遮罩剔除顶点

&#x1f369;mask &#x1f367;效果&#x1f961;步骤&#x1f366;mask贴图制作&#x1f364; 添加顶点权重编辑&#x1f957;添加mask&#x1f35f;应用修改 &#x1f367;效果 &#x1f961;步骤 &#x1f366;mask贴图制作 &#x1f4a1; 本次教程参考以下贴图制作mas…

Unity之ASE 图片遮罩

前言 当一张图片,我们希望它只显示一部分时,就可以使用一张特定的遮罩图来控制它的显示。 比如下图,我们希望它的边缘变成圆角,且过渡自然。 我们就可以和下面的遮罩图进行融合。 最后出来的效果如下图所示: 原理 原理很简单,我们只使用了一个Multiply相乘即可 我们…

手写遮罩层

&#xff08;注&#xff1a;图文不符&#xff0c;仅供参考&#xff09; 遮罩层原理 就是当出现弹窗或者确认框的时候&#xff0c;点击弹窗外的地方不会触发别的响应&#xff0c;只是单纯地关闭弹窗&#xff08;或者不关闭也不触发其他响应&#xff09; 遮罩层的简单写法 任意…

利用Openlayers4实现地图遮罩效果(三)

文章目录 前言完整代码效果 代码解读完整项目代码(含测试数据&#xff09; 前言 之前写的关于利用openlayer创建遮罩的文章&#xff08;原文&#xff09;&#xff0c;那篇文章主要是讲如何创建一个四周遮罩&#xff08;即四周外围遮罩但露出目标中心区域&#xff09;。后面有很…

前端遮罩层实现_前端制作遮罩与蒙版

-1 遮罩: 有色则显示,无色抠取,半透明则半透明 蒙版: 黑色则抠除,白色显示,灰色则半透明 概念上两者非常容易混淆,但完成的效果是一样的,需记住哪个是无色抠取,哪个是黑色抠除。 再者还有个裁剪,只是做裁切,没有对半透明情况的处理。 这样一说就知道,本文阅读起来可…

elementui 遮罩

今日突发奇想&#xff0c;在之前的项目中是通过jQyery layUI实现遮罩效果的&#xff0c;效果如图 ​​​​​​​ 但jQuery和layUI的时代已经过去了&#xff0c;于是思考了一下如何通过VUE elementUI实现遮罩效果&#xff0c;本人没亲手实现&#xff0c;但目测通过elementU…

div遮罩层

实现遮盖层&#xff0c;使一部分区域不可点击编辑等。 1.简易遮罩层一&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"width<device-width>,…

CSS mask遮罩

一、CSS mask遮罩的过往和现状 CSS mask遮罩属性的历史非常久远了&#xff0c;远到比CSS3 border-radius等属性还要久远&#xff0c;最早是出现在Safari浏览器上的&#xff0c;差不多可以追溯到09年。 不过那个时候&#xff0c;遮罩只能作为实验性的属性&#xff0c;做一些特…

spin遮罩

旋转遮罩 前言知识基石?和&#xff01;[ ]和.样式css样式选择器 数据类型Symble获取Symbol.toPrimitive 对象属性定义ToPrimitive ( input [ , preferredType ] ) void 0&undefinedhasOwnProperty空对象对象拷贝assign深拷贝 spin__assign默认属性 前言 我们加载资源等待…

遮罩和蒙版

遮罩&#xff1a;即遮挡、遮盖&#xff0c;部分画面被遮挡&#xff0c;相当于一个窗口&#xff0c;它是一个单独的图层&#xff0c;上面的图层会遮挡下面的图层。即通过上面的图层遮挡下面的图片&#xff0c;起到遮挡的效果。时间轴上一个视频轨上的素材对应一个图层。 蒙版&am…

遮罩和蒙版有什么区别,视频遮罩怎么用

在制作短视频时&#xff0c;好多小伙伴分不清遮罩与蒙版的区别&#xff0c;甚至有的人认为它们就是一个东西&#xff0c;要说起来&#xff0c;这两个看似一样的概念&#xff0c;其实还是有很大的区别&#xff0c;今天就来带各位了解一下遮罩和蒙版有什么区别&#xff0c;视频遮…

oracle手动锁表和解锁_oracle锁表查询和解锁方法是什么

oracle锁表查询和解锁方法&#xff1a;首先使用【PL/SQL Developer】连接并操作oracle数据库&#xff1b;然后使用语句select for update来锁表&#xff1b;最后用语句【alter system kill session sid】解锁。 本文操作环境&#xff1a;Windows7系统&#xff0c;PL/SQL Develo…

Oracle查询被锁表和解锁方法

一、权限问题&#xff1a; 查询被锁表必须具有管理员权限的账号才能查询。system/manager或者其他已经被赋权的用户。 二、查询锁表语句&#xff1a; select object_name, l.oracle_username, machine, s.sid, s.serial# from v$locked_object l, dba_objects o, v$session…

Oracle 锁表问题查询处理

数据库操作语句的分类 DDL&#xff1a;数据库模式定义语言&#xff0c;关键字&#xff1a;create DML&#xff1a;数据操纵语言&#xff0c;关键字&#xff1a;Insert、delete、update DCL&#xff1a;数据库控制语言 &#xff0c;关键字&#xff1a;grant、remove DQL&#x…

oracle中锁表是什么,oracle锁表查询和解锁方法是什么,oracle锁表和解锁

oracle锁表查询和解锁方法是什么甲骨文锁表的查询和解锁方法是什么&#xff0c;oracle锁表查询和解锁方法&#xff1a;首先使用PL/SQL Developer连接和操作Oracle数据库&#xff1b;然后使用select语句进行更新来锁定表&#xff1b;最后&#xff0c;用[alter system kill sessi…

Oracle锁表查询和解锁方法

我们这里一般用的PL/SQL,总是无意间把表锁住&#xff0c;所以我今天就整理了一下简单的解锁和查询锁表的方法&#xff1b; 一、首先PL/SQL要以管理员的账号&#xff08;system/admin等&#xff09;登录&#xff0c;管理员的账号和密码根据个人设置而来&#xff0c;连接为一般选…

internal/modules/cjs/loader.js:638异常问题解决

在使用webpack安装插件&#xff0c;运行项目internal/modules/cjs/loader.js:638抛出异常信息&#xff0c;具体原因不知。 解决&#xff1a; 1、删除node_module文件&#xff0c;删除package-lock.json文件 2、重新npm install 3、重新运行&#xff0c;没有再报异常