首页 > 其他分享 >页面水印定义和使用

页面水印定义和使用

时间:2024-08-09 17:39:34浏览次数:9  
标签:style 定义 水印 height width div document 页面

水印使用:

1、引入定义的watermark.js文件

let watermark = new Watermark({
    contend: "水印内容",
    fontSize: 16,
    ……
});

2、离开页面要主动销毁

watermark  && watermark.removeWatermark();

 

水印定义,定义watermark.js文件,内容如下

export default class Watermark {
  constructor({
    fontSize = 18, width = 300, height = 300, opacity = 100, content = ""
  }) {
    this.fontSize = fontSize;
    this.width = width;
    this.height = height;
    this.opacity = opacity;
    this.content = content;
    this.divId = "watermark";
  }

  // 绘制水印
  draw() {
    if (document.getElementById(this.divId) !== null) {
      document.body.removeChild(document.getElementById(this.divId));
    }

    const canvas = document.createElement("canvas");
    // 设置canvas画布大小
    canvas.width = this.width;
    canvas.height = this.height;

    const ctx = canvas.getContext("2d");
    ctx.rotate(-(20 * Math.PI) / 180); // 水印旋转角度
    ctx.font = `${this.fontSize}px Vedana`;
    ctx.fillStyle = "#666666";
    ctx.textAlign = "center";
    ctx.textBaseline = "middle";
    this.content.split("/n").forEach((item, index) => {
      ctx.fillText(item, canvas.width / 2, canvas.height / 2 + (index * this.fontSize + 10)); // 水印在画布的位置x,y轴
    });
    const div = document.createElement("div");
    div.id = this.divId;
    div.style.pointerEvents = "none";
    div.style.top = "40px";
    div.style.left = "0px";
    div.style.opacity = this.opacity / 100;
    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(${canvas.toDataURL("image/png")}) left top repeat`;
    document.body.appendChild(div);
  }

  // 初始化水印数据
  setOptions({
    fontSize = 18, width = 300, height = 300, opacity = 100, content = ""
  }) {
    this.fontSize = fontSize;
    this.width = width;
    this.height = height;
    this.opacity = opacity;
    this.content = content;
    this.draw();
  }

  // 绘制
  render() {
    this.draw();
    window.onresize = () => {
      this.draw();
    };
  }

  // 移除水印
  removeWatermark() {
    if (document.getElementById(this.divId) !== null) {
      document.body.removeChild(document.getElementById(this.divId));
    }
  }
}

 

标签:style,定义,水印,height,width,div,document,页面
From: https://www.cnblogs.com/luoxuemei/p/18351130

相关文章

  • HTML静态网页作业(HTML+CSS)——外卖平台主题网页设计制作(8个页面)
    ......
  • 自定义周选择组件、年选择组件
    //周组件weekSelect<!--周选择组件--><template><divref="viYearSelect"class="vi-year-select"><ui-inputv-model="selectVal":placeholder="placeholder":d......
  • Vue3水印组件
    1、组件封装<template><divref="watermarkContainerRef"class="watermark-container"><!--插槽--><slot></slot></div></template><scriptsetup>import{ref,onMounted,watc......
  • div-固定在页面中间,不被其他元素覆盖
    最开始设置的子元素D是text-align:center,子元素C的内容过长的时候,会发现子元素D不在页面正中了所以需要把子元素D设置成固定中间,把子元素D设置成固定中间后,发现元素B把子元素D给覆盖了一部分,所以需要在父元素A和元素B之间加一个空的div,给div设置高度后,父元素A和元素B之间的距离......
  • 方法的作用及定义
    5.1方法的作用及定义目录5.1方法的作用及定义5.1.1方法的作用5.1.2方法的定义5.1.3方法调用5.1.4静态方法5.1.1方法的作用一、什么是方法呢?Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法在程序中被......
  • fiftyone localhost:5151页面打开空白 error: disallowed MIME type (“text/plain”)
    解决办法:您必须更改两个键的注册表设置。打开注册表编辑器并前往Computer\HKEY_CLASSES_ROOT\.js并更改ContentType为application/javascript前往Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.js并更改 ContentType为application/javascript。然后只需重新启动shell......
  • 博客园自定义皮肤工具推荐:awescnb
    简介awescnb是一个用于博客园(Cnblogs)的自定义皮肤和功能增强插件。它允许用户通过简单的配置来自定义其博客的外观和增加一些额外的功能。下面是对awescnb的简要介绍:功能特点:自定义皮肤:用户可以选择不同的皮肤主题,包括背景颜色、字体样式等,以个性化他们的博客页面。扩展......
  • 【自动驾驶】自定义消息格式的话题通信(C++版本)
    目录新建消息文件更改包xml文件中的依赖关系更改cmakelist文件中的配置执行时依赖改变cmakelist编译顺序发布者程序调用者程序程序测试新建消息文件在功能包目录下,新建msg文件夹,下面新建mymsg.msg文件,其内容为stringnamefloat64value发布者包含该消息,生成头文......
  • 使用python做页面,测试数据库连通性!免费分享!测试通过~
    免费分享刚刚写的一个小程序,测试通过没问题,解BUG也就花了半小时吧有更好的方法欢迎评论区推给我谢谢。importtkinterastkfromtkinterimportmessageboximportpymysqldefget_db_info(db_source):ifdb_source=='database1':hostname=e1.get()......
  • 使用Qt实现自定义GraphicsView
    在本文中,我们将介绍如何使用Qt实现一个自定义的GraphicsView,主要是作为笔记使用QGraphicsView框架方面的使用手法、套路,对代码就不做过多的解释了,它具有以下功能:显示图像可拖动的十字标记(CrossMarkItem)可调整大小的ROI(RegionofInterest)矩形FPS和日期时间显示保存和......