Vue自定义指令给box添加水印

2023-10-27

1、创建directive.js,并引入/src/utils下

import Vue from 'vue'

Vue.directive('watermark',(el,binding)=>{
  function addWaterMarker(str,parentNode,font,textColor){// 水印文字,父元素,字体,文字颜色
    var can = document.createElement('canvas');
    parentNode.appendChild(can);
    can.width = 130;
    can.height = 180;
    can.style.display = 'none';
    var cans = can.getContext('2d');
    cans.rotate(-40 * Math.PI / 180);
    cans.font = font || "18px Microsoft JhengHei";
    cans.fillStyle = textColor || "rgba(180, 180, 180, 0.3)";
    cans.textAlign = 'center';
    cans.textBaseline = 'Middle';
    cans.fillText(str, can.width / 5, can.height / 3);
    parentNode.style.zIndex = '100000'
    parentNode.style.backgroundImage = "url(" + can.toDataURL("image/png") + ")";
  }
  addWaterMarker(binding.value.text, el, binding.value.font, binding.value.textColor)
})

2、在main.js中全局引入

import  '@/utils/directives'

3、水印使用

<div class="watermark"
    v-watermark="{text:'水印文字',textColor:'rgba(180, 180, 180, 1)'}">
</div>

在所需要盒子的div上直接使用v-watermark自定义指令即可

 解决水印会被子盒子盖住的问题

1)建立一个专门的水印盒子(大小自定)

2)用定位将盒子固定在所需位置

3)因为parentNode.style.zIndex = '100000',水印优先级已经最高,所以会覆盖下面盒子的各种事件,只需在水印盒子的style里加上pointer-events: none即可,可达到事件穿透。

  .watermark {
    position: absolute;
    top: 10px;
    left: 10px;
    width: 480px;
    height: 610px;
    pointer-events: none;
  }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue自定义指令给box添加水印 的相关文章

随机推荐

  • python无法打开excle_无法打开在python cod中创建的excel文件

    我用python代码将一些 csv文件转换为 xls 但现在当我试图打开这些文件时 却出现一个错误 COUNT DIST2 xls无法访问 文件可能已损坏 位于没有响应的服务器上 或者是只读的 我在这个项目中创建了许多其他文件 它们都是 c
  • dubbo集群之Router模块

    dubbo如何集成路由 1 默认路由是怎么设置的 消费者服务启动时 会监听注册中心的变更 所以我调用下面的方法 RegistryDirectory public synchronized void notify List
  • Matlab画时域和频谱图

    data audioread filename wav wavread plot data spectrogram data 8192 7168 8192 44100 yaxis S F T P spectrogram x window n
  • 什么是dll

    DLL的概念 DLL Dynamic Link Library 文件为动态链接库文件 又称 应用程序拓展 是软件文件类型 在Windows中 许多应用程序并不是一个完整的可执行文件 它们被分割成一些相对独立的动态链接库 即DLL文件 放置于
  • 隐藏DLL模块( HideDll)

    void HideDll HMODULE hMod GetModuleHandle MyHook dll PLIST ENTRY Head Cur PPEB LDR DATA ldr PLDR MODULE ldm asm mov eax
  • Unity ref 和out、 params的使用

    相信很多刚接触C 或者unity的同学 都会看到很多这样那样的函数 带有ref out 或者params的参数 今天我就来讲一讲这三者的使用和区别 ref 直接来看看实现的代码 public void UpdateScore ref int
  • 常见Code Review过程中发现的问题

    软件环境 Spring MVC MyBatis 主要体现在两个方面 一个是编码习惯问题 另一个是编码质量的问题 编码习惯主要有日志编写 代码注释以及编码风格的问题 而编码质量则与很多方面相关 比如轮子的使用 数据交互 逻辑精简程度等等 下面
  • jdcob--Could not initialize class com.jacob.com.ComThread

    1 dll 文件 放在tomcat bin 下面 2 dll 文件 放在c windows system32 下面 3 dll jar 文件 放在 WEB INF lib 下面
  • 服务器CPU占用过高如何解决

    1 定位出来使用资源CPU最多的进程 不管是Windows还是linux或者Mac 这个都可以通过任务管理器很快的定位出来 2 定位为什么这个进程耗费CPU资源多 通常的原因有 程序本身本身就是CPU密集型的任务 而且程序正处于工作状态 某
  • VS2019设置easyx图形库

    easyx图形库里面的graphics h头文件非常好用但是VS不能使用怎么办我了教给你设置 让在VS2019上也能愉快的使用easyx图形库 1 下载easyx图形库 我这里提供的是EasyX 2020 百度云链接 https pan b
  • Hibernate Annotation注解和关系映射

    1 Hibernate Annotation关系映射有下面几种类型 1 一对一外键关联映射 单向 2 一对一外键关联映射 双向 3 一对一主键关联映射 不重要 在这不演示 在实际中很少用 使用注解 PrimaryKeyJoinColumn
  • 浅谈游戏被唾弃的原因

    游戏为什么会被唾弃 为什么家长觉得要禁止孩子玩游戏 这是一个很值得深思的问题 今天上课时 大家正好辩论了这一点 我也想说说我的看法 欢迎大家讨论 一起为游戏行业的未来发展寻找一个方向 来自一个梦想成为游戏开发者的请求 首先 有人厌恶游戏的原
  • 到底什么是非线性规划?

    本文转自新浪博客 到底什么是非线性优化 作者 那些年的那些偏执 网址 http blog sina com cn s blog 7445c2940102x3x4 html 作者系在读博士生 文章写的非常浅显易懂 本文除转载之外 做简单修改整
  • 以半加器实现全加器

    module fulladder input wire in 1 input wire in 2 input wire cin 进位 output wire sum output wire count wire hfsum1 wire hf
  • CNN-LSTM多变量回归预测(Matlab) 基于卷积-长短期记忆网络(CNN-LSTM)的数据回归预测

    CNN LSTM多变量回归预测 Matlab 基于卷积 长短期记忆网络 CNN LSTM 的数据回归预测 1 CNN结合LSTM做拟合回归预测 数据多维输入单维输出 代码内注释详细 直接替换数据就可以使用 2 运行环境Matlab2020b
  • Android 蓝牙串口通信工具类 SeriaPortUtil 2.0.+

    原文地址 https www shanya world archives 2fd981ea html SerialPortUtil 提示 最新版本 3 0 已发布 其对比 2 0 版本 API有了很大改动 且修复了很多bug 并带来一些新的
  • jeecgboot数据权限用法

    添加数据规则 菜单管理中给需要数据权限的菜单加数据规则 Jeecg Boot 数据权限用法 编码 描述 sys user code 当前登录用户登录账号 sys user name 当前登录用户真实名称 sys date 当前系统日期 sy
  • 因果推断dowhy之-探索酒店取消预订的原因分析

    0x01 DoWhy案例分析 本案例依旧是基于微软官方开源的文档进行学习 有想更深入了解的请移步微软官网 背景 取消酒店预订可能有不同的原因 客户可能会要求一些无法提供的东西 例如 停车场 客户可能后来发现酒店没有满足他们的要求 或者客户可
  • Qt Remote Objects 简介

    QtRO是Qt RemoteObjects的简称 是从5 9开始Qt官方推出的一个用于进程间通信 IPC 的新模块 虽然该模块目前仍处于TP阶段 但已经足够稳定 由于项目开发需要 我们将一个大项目划分成了若干个子工程 各个子工程都是独立的程
  • Vue自定义指令给box添加水印

    1 创建directive js 并引入 src utils下 import Vue from vue Vue directive watermark el binding gt function addWaterMarker str pa