前端实现给页面中的某一部分生成水印

有时候我们的界面中数据展示的时候,会有一些敏感的重要的信息,为防止他人大量截图用作其他不正当用途,我们会需要在页面上生成水印,让他人即使截图,也是带有标识的。

那么前端应该怎么生成水印的呢?这里给大家提供一个方案,我这个是在vue项目中做的水印,好啦,话不多说  贴代码啦~

waterMark.js-----代码:

let watermark = {};

let setWatermark = canvasConfig => {

  let id = "canvas-water-mark-" + canvasConfig.markEleId;

  let watermarkEle = document.getElementById(canvasConfig.markEleId);

  if (document.getElementById(id) !== null) {

    watermarkEle.removeChild(document.getElementById(id));

  }

  // 生成canvas画布

  let canvasEle = document.createElement("canvas");

  // 水印宽高

  canvasEle.width = 270;

  canvasEle.height = 100;

let context = canvasEle.getContext("2d");

  context.rotate((-15 * Math.PI) / 180);

  context.font = "14px PingFangSC-Heavy,PingFang SC"; //水印字体、字号

  context.fillStyle = "rgba(0, 0, 0, 0.05)";

  context.textAlign = "left";

  context.textBaseline = "Middle";

  context.fillText(canvasConfig.text, 1, canvasEle.height);

  // 生成一个元素并将canvas设为其背景图片

  let bgElement = document.createElement("div");

  bgElement.id = id;

  bgElement.style.pointerEvents = "none";

  bgElement.style.top = canvasConfig.top + "px";

  bgElement.style.left = "0px";

  bgElement.style.position = "absolute";

  bgElement.style.zIndex = "100000";

  bgElement.style.width = "100%";

  bgElement.style.height = `calc(100% - ${bgElement.style.top})`;

  bgElement.style.background =

    "url(" + canvasEle.toDataURL("image/png") + ") left top repeat";

  watermarkEle.appendChild(bgElement);

  return id;

};

 

/**

 * @param {Object} canvasConfig 要加上水印的element 配置

 */

watermark.set = canvasConfig => {

  let id = setWatermark(canvasConfig);

  if (document.getElementById(id) === null) {

    id = setWatermark(canvasConfig);

  }

  // window.onresize = () => {

  //   setWatermark(canvasConfig);

  // };

};

watermark.formatDate = date => {

  if (typeof date == "object") {

    var y = date.getFullYear();

    var m = date.getMonth() + 1;

    m = m < 10 ? "0" + m : m;

    var d = date.getDate();

    d = d < 10 ? "0" + d : d;

    return "" + y + m + d;

  } else {

    return date;

  }

};

export default watermark;

使用-----:

1.引入waterMark.js文件   

import watermark from '@/utils/waterMark'

2.调用waterMark.js中的生成水印的方法

watermark.set(canvasConfig);

噔噔~水印生成了

前端实现给页面中的某一部分生成水印