用js实现html页面水印

举报
JsJiaMi 发表于 2023/04/10 19:28:08 2023/04/10
【摘要】 要在 HTML 页面中添加水印并防止截图,可以使用 JavaScript。以下是实现的基本步骤:1、在 HTML 中添加一个 div 元素作为水印容器,并设置其样式。2、使用 JavaScript 动态生成水印内容,并将其添加到水印容器中。3、通过 CSS 设置水印文本的样式,例如颜色、字体大小等。4、使用 CSS 将水印容器置于所有其他元素的最顶层,从而覆盖整个页面。5、监听窗口的 res...

要在 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 属性的作用,截图时就无法完整地复制水印文本,从而达到防截图的效果。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。