绘制页面背景水印

本文介绍如何利用JavaScript和Canvas技术在网页中添加动态的背景水印效果,实现个性化页面保护。
摘要由CSDN通过智能技术生成
function Watermark (data) {
  this.id = data.id || 'my-canvas'; // canvas id
  this.wrapper = document.querySelector(data.wrapper) || document.body; // 绘制容器
  this.attribute = data.attribute; // canvas样式
  this.fillStyle = data.fillStyle || '#dddddd'; // 水印字体的颜色
  this.font = data.font || '10px sans-serif'; // 水印字体样式
  this.text = data.text || '绘制水印'; // 水印内容
  this.rotate = data.rotate || -20; // 旋转角度
  this.init(data);
}

// 创建canvas
Watermark.prototype.creatCanvas = function () {
  const _is = document.querySelector(`#${this.id}`);
  if (!_is) {
    const _canvas = document.createElement('canvas');
    const { width, height } = this.attribute;
    _canvas.id = this.id;
    _canvas.width = width;
    _canvas.height = height;
    for (const attr in this.attribute) {
      _canvas.style[attr] = this.attribute[attr];
    }
    this.wrapper.appendChild(_canvas);
    return _canvas;
  }
  return _is;
}

// 清除canvas及背景
Watermark.prototype.clearCanvas = function () {
  this.wrapper.removeChild(this.creatCanvas());
  this.wrapper.style.backgroundImage = 'none';
  this.wrapper.style.userSelect = 'text';
}

// 初始化canvas
Watermark.prototype.init = function () {
  this.creatCanvas();
  this.drawWatermark();
}

// 绘制水印
Watermark.prototype.drawWatermark = function () {
  const _canvas = this.creatCanvas();
  const context = _canvas.getContext("2d");
  context.fillStyle = this.fillStyle;
  context.font = this.font;
  context.rotate(this.rotate * Math.PI / 180);
  this.text.split(',').map((e, i) => {
    context.fillText(e, 70 * i, 50);
    context.save();
  })
  this.wrapper.style.userSelect = 'none';
  this.wrapper.style.backgroundImage = `url(${_canvas.toDataURL()})`;
  return context;
}

export default Watermark;

使用
      watermark = new Watermark({
        attribute: {
          width: 120,
          height: 50,
          display: 'none'
        },
        wrapper: '.iphone_module',
        fillStyle: '#ddd',
        font: '14px microsoft yahei',
      });
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值