概述
Vue项目添加水印
1、使用背景图添加水印
缺点:会被后续的div模块覆盖
步骤1:
创建watermark.js文件
/**
水印添加方法
*/
let setWatermark = (str1, str2) => {
let id = '1.23452384164.123412415'
if (document.getElementById(id) !== null) {
document.body.removeChild(document.getElementById(id))
}
let can = document.createElement('canvas')
// 设置canvas画布大小
can.width = 150
can.height = 80
let cans = can.getContext('2d')
cans.rotate(-20 * Math.PI / 180) // 水印旋转角度
cans.font = '15px Vedana'
cans.fillStyle = '#666666'
cans.textAlign = 'center'
cans.textBaseline = 'Middle'
cans.fillText(str1, can.width / 2, can.height) // 水印在画布的位置x,y轴
cans.fillText(str2, can.width / 2, can.height + 22)
let div = document.createElement('div')
div.id = id
div.style.pointerEvents = 'none'
div.style.top = '40px'
div.style.left = '0px'
div.style.opacity = '0.15'
div.style.position = 'fixed'
div.style.zIndex = '100000'
div.style.width = document.documentElement.clientWidth + 'px'
div.style.height = document.documentElement.clientHeight
+ 'px'
div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat'
document.body.appendChild(div)
return id
}
// 添加水印方法
export const setWaterMark = (str1, str2) => {
let id = setWatermark(str1, str2)
if (document.getElementById(id) === null) {
id = setWatermark(str1, str2)
}
}
// 移除水印方法
export const removeWatermark = () => {
let id = '1.23452384164.123412415'
if (document.getElementById(id) !== null) {
document.body.removeChild(document.getElementById(id))
}
}
步骤2:
vue中直接引用、使用。
import { removeWatermark, setWaterMark } from '@/common/watermark'
mounted() {
setWaterMark('admin', 'password');
},
destroyed() {
removeWatermark();
},
2、通过设置宽高行列添加水印
优点:不会被后续添加的模块所覆盖
步骤1:
mounted(){
this.$nextTick(function() {
this.watermark({ watermark_txt: "admin
password"});
})
}
步骤2:
watermark(settings) {
//默认设置
var defaultSettings = {
watermark_txt: "text",
watermark_x: 60, //水印起始位置x轴坐标
watermark_y: 170, //水印起始位置Y轴坐标
watermark_rows: 4, //水印行数
watermark_cols: 10, //水印列数
watermark_x_space: 170, //水印x轴间隔
watermark_y_space: 150, //水印y轴间隔
watermark_color: "rgba(0, 0, 0, 0.12)", //水印字体颜色
watermark_alpha: 0.8, //水印透明度
watermark_fontsize: "18px", //水印字体大小
watermark_font: "微软雅黑", //水印字体
watermark_width: 300, //水印宽度
watermark_height: 50, //水印长度
watermark_angle: 35, //水印倾斜度数
};
//采用配置项替换默认值,作用类似jquery.extend
if (arguments.length === 1 && typeof arguments[0] === "object") {
let src = arguments[0] || {};
Object.keys(src).forEach((e) => {
defaultSettings[e] = src[e];
});
}
var oTemp = document.createDocumentFragment();
//获取页面最大宽度
var page_width =
Math.max(document.body.scrollWidth, document.body.clientWidth) - 30;
//获取页面最大长度
var page_height =
Math.max(
$("#caseDetails").get(0).clientHeight,
document.body.clientHeight,
$("#caseDetails").get(0).scrollHeight
) - 100;
// var page_height = Math.max(document.querySelector('#cases').scrollHeight, document.querySelector('#cases').clientHeight)-100;
// console.log(page_width, page_height);
//如果将水印列数设置为0,或水印列数设置过大,超过页面最大宽度,则重新计算水印列数和水印x轴间隔
if (
defaultSettings.watermark_cols == 0 ||
parseInt(
defaultSettings.watermark_x +
defaultSettings.watermark_width * defaultSettings.watermark_cols +
defaultSettings.watermark_x_space *
(defaultSettings.watermark_cols - 1)
) > page_width
) {
defaultSettings.watermark_cols = parseInt(
(page_width -
defaultSettings.watermark_x +
defaultSettings.watermark_x_space) /
(defaultSettings.watermark_width +
defaultSettings.watermark_x_space)
);
defaultSettings.watermark_x_space = parseInt(
(page_width -
defaultSettings.watermark_x -
defaultSettings.watermark_width * defaultSettings.watermark_cols) /
(defaultSettings.watermark_cols - 1)
);
}
// 如果将水印行数设置为0,或水印行数设置过大,超过页面最大长度,则重新计算水印行数和水印y轴间隔
if (
defaultSettings.watermark_rows == 0 ||
parseInt(
defaultSettings.watermark_y +
defaultSettings.watermark_height * defaultSettings.watermark_rows +
defaultSettings.watermark_y_space *
(defaultSettings.watermark_rows - 1)
) > page_height
) {
defaultSettings.watermark_rows = parseInt(
(defaultSettings.watermark_y_space +
page_height -
defaultSettings.watermark_y) /
(defaultSettings.watermark_height +
defaultSettings.watermark_y_space)
);
defaultSettings.watermark_y_space = parseInt(
(page_height -
defaultSettings.watermark_y -
defaultSettings.watermark_height * defaultSettings.watermark_rows) /
(defaultSettings.watermark_rows - 1)
);
}
let x;
let y;
for (let i = 0; i < defaultSettings.watermark_rows; i++) {
y =
defaultSettings.watermark_y +
(defaultSettings.watermark_y_space +
defaultSettings.watermark_height) *
i;
for (let j = 0; j < defaultSettings.watermark_cols; j++) {
x =
defaultSettings.watermark_x +
(defaultSettings.watermark_width +
defaultSettings.watermark_x_space) *
j;
let mask_div = document.createElement("div");
mask_div.classList.add("print_waterMask");
mask_div.id = "mask_div" + i + j;
mask_div.appendChild(
document.createTextNode(defaultSettings.watermark_txt)
);
//设置水印div倾斜显示
mask_div.style.webkitTransform =
"rotate(-" + defaultSettings.watermark_angle + "deg)";
mask_div.style.MozTransform =
"rotate(-" + defaultSettings.watermark_angle + "deg)";
mask_div.style.msTransform =
"rotate(-" + defaultSettings.watermark_angle + "deg)";
mask_div.style.OTransform =
"rotate(-" + defaultSettings.watermark_angle + "deg)";
mask_div.style.transform =
"rotate(-" + defaultSettings.watermark_angle + "deg)";
mask_div.style.visibility = "visible";
mask_div.style.position = "fixed";
mask_div.style.left = x + "px";
mask_div.style.top = y + "px";
mask_div.style.zIndex = "9999";
mask_div.style.pointerEvents = "none";
//mask_div.style.border="solid #eee 1px";
mask_div.style.opacity = defaultSettings.watermark_alpha;
mask_div.style.fontSize = defaultSettings.watermark_fontsize;
mask_div.style.fontFamily = defaultSettings.watermark_font;
mask_div.style.color = defaultSettings.watermark_color;
mask_div.style.textAlign = "center";
mask_div.style.width = defaultSettings.watermark_width + "px";
mask_div.style.height = defaultSettings.watermark_height + "px";
mask_div.style.display = "inline-block";
oTemp.appendChild(mask_div);
}
}
document.querySelector("#caseDetails").appendChild(oTemp);
},
最后
以上就是着急帽子为你收集整理的Vue项目添加水印的全部内容,希望文章能够帮你解决Vue项目添加水印所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复