当前位置: 首页 > news >正文

vue+watermark-dom实现页面水印效果

前言

页面水印大家应该都不陌生,它可以用于验证数字媒体的来源和完整性,还可以用于版权保护和信息识别,这些信息可以在不影响媒体质量的情况下嵌入,‌并在需要时进行提取。‌本文将通过 vue 结合 watermark-dom 库,教大家实现简单而有效的页面水印效果。


watermark-dom

watermark.js 是基于 DOM 对象实现的 BS 系统的水印,确保系统保密性,安全性,降低数据泄密风险,简单轻量,支持多属性配置,动态计算水印,水印防被删(监听水印组件元素删除并重新添加,监听改变水印的属性并重新添加)。


特性

  • 多属性配置,简单易上手;
  • 动态计算水印;
  • 水印防被删(监听水印组件元素删除并重新添加,监听改变水印的属性并重新添加);
  • 支持 2 种导入使用:本地引用,npm 引用;
  • 水印测试工具:testTool 工具;
  • 内置 3 种全局 API 方法:init()load(), remove()
  • 原理:pointer-events 事件穿透属性,Shadow DOM(影子 DOM),opacity 等。

一、安装

npm install watermark-dom

二、引入

import watermark from 'watermark-dom'

三、内置方法

1. watermark.init(setting)

这个方法用于初始化水印,可以设置水印的样式、内容和位置等参数。

栗子

watermark.init({watermark_txt: '测试水印',watermark_color: 'gray',watermark_fontsize: '24px',
})

2. watermark.load(setting)

用于手动加载水印。

栗子

const options = {watermark_txt: '测试水印',watermark_color: 'gray',watermark_fontsize: '24px',
}
watermark.load(options)

3. watermark.remove()

这个方法用于移除已加载的水印。

栗子

watermark.remove();

四、常用的属性和配置

watermark_id: 'wm_div_id',          //水印总体的id
watermark_prefix: 'mask_div_id',    //小水印的id前缀
watermark_txt:"测试水印",            //水印的内容
watermark_x:20,                     //水印起始位置x轴坐标
watermark_y:20,                     //水印起始位置Y轴坐标
watermark_rows:0,                   //水印行数
watermark_cols:0,                   //水印列数
watermark_x_space:100,              //水印x轴间隔
watermark_y_space:50,               //水印y轴间隔
watermark_font:'微软雅黑',           //水印字体
watermark_color:'black',            //水印字体颜色
watermark_fontsize:'18px',          //水印字体大小
watermark_alpha:0.15,               //水印透明度,要求设置在大于等于0.005
watermark_width:100,                //水印宽度
watermark_height:100,               //水印长度
watermark_angle:15,                 //水印倾斜度数
watermark_parent_width:0,           //水印的总体宽度(默认值:body的scrollWidth和clientWidth的较大值)
watermark_parent_height:0,          //水印的总体高度(默认值:body的scrollHeight和clientHeight的较大值)
watermark_parent_node:null          //水印插件挂载的父元素element,不输入则默认挂在body上

五、实例代码

<template><div style="height:100vh"></div>
</template><script>
import watermark from 'watermark-dom'
export default {mounted() {const watermarkText = '测试水印内容'const options = {watermark_txt: watermarkText,watermark_color: 'gray',watermark_fontsize: '14px',watermark_alpha: 0.5,watermark_angle: 15,watermark_width: 100,watermark_height: 20,}watermark.load(options)},
}
</script>

实现效果

在这里插入图片描述


六、非全屏展示

watermark_parent_node 属性用于指定水印的父节点,即确定水印应该显示在哪个 DOM 元素的内部。通过设置 watermark_parent_node 属性,可以控制水印的显示位置和范围。例如,如果你想要将水印显示在特定的 div 元素内部,可以将该 div 元素作为 watermark_parent_node。这样,水印将被限制在该 div 元素的范围内显示。

<template><div class="box"><div class="topBox"></div><div id="watermarkId" class="cenBox"></div><div class="bomBox"></div></div>
</template><script>
import watermark from 'watermark-dom'
export default {mounted() {const watermarkText = '测试水印内容'const options = {watermark_txt: watermarkText,watermark_color: 'gray',watermark_fontsize: '14px',watermark_alpha: 0.5,watermark_angle: 15,watermark_width: 100,watermark_height: 20,watermark_parent_node: 'watermarkId',}watermark.load(options)},
}
</script>
<style scoped>
.box {width: 100%;height: 100vh;
}
.topBox {height: 30vh;background: cadetblue;
}
.cenBox {height: 50vh;
}
.bomBox {height: 20vh;background: cornflowerblue;
}
</style>

实现效果
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • ESP32CAM人工智能教学15
  • React中Hooks几个有用的 ref
  • go语言Gin框架的学习路线(八)
  • 基于3D开发引擎HOOPS平台的大型三维PLM系统的设计、开发与应用
  • Linux之基础IO(上)
  • TeraTerm 使用技巧
  • 什么是单例模式,有哪些应用?
  • 模板、STL 简介(深度剖析)
  • VisualRules-Web案例展示(一)
  • mysql、oracle、db2数据库连接参数
  • SpringSecurity通用权限管理系统
  • 关于合芯新通RTK配置的方法记录7.23
  • k8s部署rabbitmq集群
  • Json结构解析比较
  • 69、ncnn学习onnx2ncnn不支持带三维算子相乘gemm/repeat转换方法学习
  • ES6指北【2】—— 箭头函数
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【391天】每日项目总结系列128(2018.03.03)
  • 11111111
  • 4. 路由到控制器 - Laravel从零开始教程
  • Android开源项目规范总结
  • IDEA 插件开发入门教程
  • js面向对象
  • JS专题之继承
  • Linux CTF 逆向入门
  • Promise面试题,控制异步流程
  • Python爬虫--- 1.3 BS4库的解析器
  • Python中eval与exec的使用及区别
  • SpiderData 2019年2月13日 DApp数据排行榜
  • swift基础之_对象 实例方法 对象方法。
  • Swoft 源码剖析 - 代码自动更新机制
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 构建工具 - 收藏集 - 掘金
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 什么软件可以剪辑音乐?
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 跳前端坑前,先看看这个!!
  • 小试R空间处理新库sf
  • 赢得Docker挑战最佳实践
  • 06-01 点餐小程序前台界面搭建
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • ​卜东波研究员:高观点下的少儿计算思维
  • #微信小程序:微信小程序常见的配置传值
  • (2)(2.10) LTM telemetry
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (Note)C++中的继承方式
  • (Repost) Getting Genode with TrustZone on the i.MX
  • (多级缓存)缓存同步
  • (二)十分简易快速 自己训练样本 opencv级联lbp分类器 车牌识别
  • (官网安装) 基于CentOS 7安装MangoDB和MangoDB Shell
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (力扣记录)1448. 统计二叉树中好节点的数目