网页设计html最简单水印方法,前端canvas水印快速制作(附完整代码)

本文介绍了如何使用HTML和Canvas实现两种类型的水印效果:斜纹类和倾斜类。通过创建画布、设置文字样式和角度,动态调整字体大小,以及将Canvas转换为背景图片,轻松为网页添加水印。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

两种水印效果如图:

37c747763576bfa0b48d54180b95d694.png

8e39d465c5e7cb0b364ee9f686954586.png

原理解析:

图一斜纹类:创建一个和页面一样大的画布,根据页面大小以及倾斜角度大致铺满水印文字,最后转化为一张图片设为背景

图二倾斜类:将文字倾斜后转化为图片,然后设置背景图片repeat填充整个页面

代码分析:

这里我只简略分析图一斜纹类,事实上这两种方式都较为简单,不需要特别强的canvas基础,只需大概了解就行,直接上完整代码吧

图一

Document

.water {

width: 100vw;

height: 2000px;

position: absolute;

top: 0;

left: 0;

background-repeat: no-repeat;

}

.content {

width: 800px;

height: 2000px;

margin-left: auto;

margin-right: auto;

background: cadetblue;

overflow: hidden;

}

function addWaterMarker(str) {

// 这里限制了不超过15个字,实际按需求来

var cpyName = str;

if (str.length > 16) {

cpyName = str.substring(0, 16);

}

// 创建 canvas 元素

var can = document.createElement('canvas');

// 获取 content 元素

var report = $('.content')[0]

// 将 canvas 元素添加到 content 中

report.appendChild(can);

// 设置 canvas页面宽度,这里的 800 是因为我司水印文件大小固定,可按需求更改

can.width = 800;

// 获取整个body高度

can.height = document.body.offsetHeight;

// 隐藏 canvas 元素

can.style.display = 'none';

can.style.zIndex = '999'

// 获取 canvas 元素工具箱

var cans = can.getContext('2d');

// 设置文字倾斜角度为 -25 度以及样式

cans.rotate(-25 * Math.PI / 180);

cans.font = "800 30px Microsoft JhengHei";

cans.fillStyle = "#000";

cans.textAlign = 'center';

cans.textBaseline = 'Middle';

// 动态改变字体大小

if(cans.measureText(cpyName).width > 180) {

var size = 180 / cpyName.length

cans.font = '800 ' + size +'px '+ ' Microsoft JhengHei'

}

/*

双重遍历,

当 宽度小于页面宽度时,

当 高度小于页面高度时,

这里的宽高可以适当写大,目的是为了让水印文字铺满

*/

for(let i = (document.body.offsetHeight*0.5)*-1; i<800; i+=160) {

for(let j = 0; j

// 填充文字,x 间距, y 间距

cans.fillText(cpyName, i, j)

}

}

// 将 canvas 转化为图片并且设置为背景

report.style.backgroundImage = "url(" + can.toDataURL("image/png") + ")";

}

addWaterMarker('测试水印');

图二

Document

.water {

width: 100vw;

height: 2000px;

position: absolute;

top: 0;

left: 0;

background-repeat: no-repeat;

}

.content {

width: 800px;

height: 2000px;

margin-left: auto;

margin-right: auto;

background: cadetblue;

overflow: hidden;

}

// 添加水印方法

function addWaterMarker(str) {

var cpyName = str;

if (str.length > 16) {

cpyName = str.substring(0, 16);

}

var can = document.createElement('canvas');

var report = $('.content')[0];

report.appendChild(can);

can.width = 180;

can.height = 110;

can.style.display = 'none';

can.style.zIndex = '999'

var cans = can.getContext('2d');

cans.rotate(-25 * Math.PI / 180);

cans.font = "800 30px Microsoft JhengHei";

cans.fillStyle = "#000";

cans.textAlign = 'center';

cans.textBaseline = 'Middle';

if(cans.measureText(cpyName).width > 180) {

var size = 180 / cpyName.length

cans.font = '800 ' + size +'px '+ ' Microsoft JhengHei'

}

cans.fillText(cpyName, 60, 100);

report.style.backgroundImage = "url(" + can.toDataURL("image/png") + ")";

}

addWaterMarker('测试水印');

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值