用js实现html页面水印

要在 HTML 页面中添加水印并防止截图,可以使用 JavaScript。以下是实现的基本步骤:

1、在 HTML 中添加一个 div 元素作为水印容器,并设置其样式。

2、使用 JavaScript 动态生成水印内容,并将其添加到水印容器中。

3、通过 CSS 设置水印文本的样式,例如颜色、字体大小等。

4、使用 CSS 将水印容器置于所有其他元素的最顶层,从而覆盖整个页面。

5、监听窗口的 resize 和 scroll 事件,以便及时更新水印位置。

6、使用 Canvas 绘制图片或者使用 CSS 的 mix-blend-mode 属性来实现防截图效果。

下面是一个示例代码片段:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Watermark Example</title>

<style>

#watermark {

position: fixed;

top: 0;

left: 0;

width: 100%;

height: 100%;

z-index: 9999;

pointer-events: none;

}

#watermark span {

font-size: 24px;

color: #ccc;

position: absolute;

transform: rotate(-30deg);

padding:100px;

pointer-events: none;

}

</style>

</head>

<body>

<div id="watermark"></div>

<script>

function createWatermark() {

var watermark = document.getElementById('watermark');

var angle = -30;

var top = -30;

var text = 'My Watermark';

for (var i = 0; i < 10; i++) {

var span = document.createElement('span');

span.style.left = i * 200 + 'px';

span.style.top = i * top + 'px';

span.style.webkitTransform = 'rotate(' + angle + 'deg)';

span.style.MozTransform = 'rotate(' + angle + 'deg)';

span.style.msTransform = 'rotate(' + angle + 'deg)';

span.style.OTransform = 'rotate(' + angle + 'deg)';

span.style.transform = 'rotate(' + angle + 'deg)';

span.appendChild(document.createTextNode(text));

watermark.appendChild(span);

angle += 15;

top += 15;

}

}

createWatermark();

window.addEventListener('resize', function() {

createWatermark();

});

window.addEventListener('scroll', function() {

createWatermark();

});

// 防截图

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

canvas.width = window.innerWidth;

canvas.height = window.innerHeight;

canvas.style.position = 'fixed';

canvas.style.top = 0;

canvas.style.left = 0;

canvas.style.pointerEvents = 'none';

canvas.style.mixBlendMode = 'multiply';

document.body.appendChild(canvas);

var ctx = canvas.getContext('2d');

ctx.fillRect(0, 0, canvas.width, canvas.height);

</script>

</body>

</html>

这个示例代码添加了一个水印容器,并在其中添加了一些旋转的文本。使用 CSS 将水印容器置于最顶层,并禁用了其指针事件,以防止干扰用户操作。同时在窗口 resize 和 scroll 事件中更新水印位置,以适应页面变化。

如果想保护上面的JavaScript代码逻辑,可以用JShaman进行JavaScript代码混淆加密,加密后的代码不可读、可起到防分析的作用。

此外,这个示例代码还使用 Canvas 绘制了一个与页面大小相同的黑色矩形,并将其与水印容器叠加在一起。由于 mix-blend-mode 属性的作用,截图时就无法完整地复制水印文本,从而达到防截图的效果。

效果:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现HTML5网页水印SDK的方法可以分为以下步骤: 1. 创建一个HTML5 Canvas元素:在页面中添加一个canvas元素,设置其宽高和位置,并且将其z-index层级调整到最高。 2. 绘制水印文字:使用canvas的getContext方法获取绘制上下文,设置字体、颜色、透明度等属性,然后使用fillText方法绘制水印文字。 3. 将Canvas转换成图片:使用canvas的toDataURL方法将canvas转换成图片格式,方便后续的使用和保存。 4. 封装成SDK:将上述步骤封装成一个SDK,并提供相应的API接口供开发者调用。 下面是一个简单的示例代码: ```html <canvas id="watermark" style="position: fixed; top: 0; left: 0; z-index: 999;"></canvas> ``` ```javascript // 创建Canvas绘制水印 function createWatermark(text) { var canvas = document.getElementById('watermark'); canvas.width = 300; canvas.height = 200; var ctx = canvas.getContext('2d'); ctx.font = "20px Arial"; ctx.fillStyle = "rgba(0, 0, 0, 0.1)"; ctx.textAlign = "center"; ctx.textBaseline = "middle"; ctx.fillText(text, canvas.width/2, canvas.height/2); return canvas.toDataURL(); } // 封装成SDK var watermark = { create: function(text) { return createWatermark(text); } }; // 使用示例 var watermarkUrl = watermark.create('用户名水印'); document.body.style.backgroundImage = 'url(' + watermarkUrl + ')'; ``` 在上述代码中,我们创建了一个id为watermark的canvas元素,然后使用createWatermark方法生成水印图片,并将其设置为body的背景图片。最后将createWatermark方法封装成一个watermark的SDK供其他开发者使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值