vue水印功能
前言实现let waterMarkDOM;let clearWaterMark = () => {if (waterMarkDOM) waterMarkDOM.remove();};/*** @description: 创建水印* @param {String} contentText 水印内容*/export default function createWaterMark(waterMa
·
前言
最近需要实现一个水印的功能,现进行整理发出来vue进行水印功能的制作;
虽然我是用于移动端,但是PC端的实现是一样可以用的
实现
第一步:创建一个工具类
在你项目中,创建一个文件夹
,专门管理你的工具类js,一般取名utils或者tools,看你自己。
然后在其中进行创建一个waterMark.js
文件,把以下代码加进来。
let waterMarkDOM;
let clearWaterMark = () => {
if (waterMarkDOM) waterMarkDOM.remove();
};
/**
* @description: 创建水印
* @param {String} contentText 水印内容
*/
export default function createWaterMark(waterMarkName) {
clearWaterMark();
if (!waterMarkName) {
return;
}
let width = window.parseInt(document.body.clientWidth);
// 修改数值进行调整水印显示横轴数量
let canvasWidth = width / window.parseInt(width / 160);
let fontFamily = window.getComputedStyle(document.body)['font-family'];
const fragment = document.createDocumentFragment();
waterMarkDOM = document.createElement('div');
// 设置水印样式css 类名:water-mark-wrap,可自己修改
waterMarkDOM.className = 'water-mark-wrap';
let spanStr = '';
for (let i = 0; i < 100; i++) {
// 设置水印文字样式css // 类名:water-word,可自己修改
spanStr += `<span class="water-word" style=width:${canvasWidth}px;height:180px;font: ${fontFamily}>${waterMarkName}</span>`;
}
waterMarkDOM.innerHTML = spanStr;
fragment.appendChild(waterMarkDOM);
document.body.appendChild(fragment);
}
第二步:在需要水印的页面引入
在你需要水印的vue页面进行引入该文件
例:
<template>
<div>
// 页面内容编写区
</div>
</template>
<script>
// 引入水印js
import waterMark from "../utils/waterMark"
export default {
name: "app",
}
</script>
<style scoped>
// 样式编写区
</style>
第三步: 编写样式
在页面中编写waterMark.js
文件中涉及到的样式类名的样式
<template>
<div>
// 页面内容编写区
</div>
</template>
<script>
// 引入水印js
import waterMark from "../utils/waterMark"
export default {
name: "app",
}
</script>
<style scoped>
// 样式编写区
.water-mark-wrap {
position: absolute;
width: 100%;
height: 100%;
z-index: 99;
pointer-events: none;
top: 0;
left: 0;
display: flex;
overflow: hidden;
flex-wrap: wrap;
}
.water-word {
display: flex;
align-items: center;
justify-content: center;
font-size: 18px;
color: rgba(8, 8, 8, 0.1);
transform: rotate(-45deg);
user-select: none;
}
</style>
注意:z-index属性为设置是需要将文字进行浮在别的界面内容上面还是
放置在界面内容的下面。
例:
z-index:9999 浮在界面内容上面
z-index:-1 放置在界面内容的下面
第四步:编写方法
在JavaScript书写代码区域新加一个方法
<template>
<div>
// 页面内容编写区
</div>
</template>
<script>
// 引入水印js
import waterMark from "../utils/waterMark"
export default {
name: "app",
methods: {
// 水印功能方法
waterMarkMethod() {
// 定义水印文本
let waterWord = "我是水印";
// 调用引用的水印
waterMark(waterWord);
}
}
}
</script>
<style scoped>
// 样式编写区
.water-mark-wrap {
position: absolute;
width: 100%;
height: 100%;
z-index: 99;
pointer-events: none;
top: 0;
left: 0;
display: flex;
overflow: hidden;
flex-wrap: wrap;
}
.water-word {
display: flex;
align-items: center;
justify-content: center;
font-size: 18px;
color: rgba(8, 8, 8, 0.1);
transform: rotate(-45deg);
user-select: none;
}
</style>
第五步: 调用方法
在created或者mounted中调用该方法,以便于页面加载的时候实现水印
<template>
<div>
// 页面内容编写区
</div>
</template>
<script>
// 引入水印js
import waterMark from "../utils/waterMark"
export default {
name: "app",
methods: {
// 水印功能方法
waterMarkMethod() {
// 定义水印文本
let waterWord = "我是水印";
// 调用引用的水印
waterMark(waterWord);
},
mounted() {
// 调用水印功能方法
this.waterMarkMethod();
}
}
}
</script>
<style scoped>
// 样式编写区
.water-mark-wrap {
position: absolute;
width: 100%;
height: 100%;
z-index: 99;
pointer-events: none;
top: 0;
left: 0;
display: flex;
overflow: hidden;
flex-wrap: wrap;
}
.water-word {
display: flex;
align-items: center;
justify-content: center;
font-size: 18px;
color: rgba(8, 8, 8, 0.1);
transform: rotate(-45deg);
user-select: none;
}
</style>
实际效果截图
以下我本人实现水印的实际效果
以上截图我本人制作的一个项目截图
结语
以上,vue水印功能完成
更多推荐
已为社区贡献8条内容
所有评论(0)