使用Canvas创建透明水印覆盖内容,通过J*aScript绘制文字或图片并叠加到目标区域,支持动态更新与响应式适配,有效标识来源且难以直接移除。

在HTML5中实现水印效果,主要通过 Canvas 元素绘制透明文字或图案,并将其作为叠加层覆盖在目标内容上。这种方式灵活、兼容性好,适合为图片、文档预览区域甚至视频添加动态水印。
使用元素创建一个透明画布,设置其位置为绝对定位,覆盖在目标内容上方。通过J*aScript在画布上绘制文字或图像水印。
示例代码:
<canvas id="watermark" style="position: absolute; top: 0; left: 0; pointer-events: none; z-index: 999; opacity: 0.2;"></canvas>
<p><script>
function createWatermark(text = '私密文件', font = '20px Microsoft YaHei', fillStyle = 'red') {
const canvas = document.getElementById('watermark');
const ctx = canvas.getContext('2d');</p><p>// 设置画布尺寸为窗口大小
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;</p><p>// 文字旋转角度和间距
const angle = -30 * Math.PI / 180;
const stepX = 200;
const stepY = 100;</p><p>ctx.font = font;
ctx.fillStyle = fillStyle;
ctx.textAlign = 'center';
ctx.textBaseline = 'middle';</p><p>// 绘制网格状水印
for (let x = 0; x < canvas.width; x += stepX) {
for (let y = 0; y < canvas.height; y += stepY) {
ctx.s*e();
ctx.translate(x + stepX/2, y + stepY/2);
ctx.rotate(angle);
ctx.fillText(text, 0, 0);
ctx.restore();
}
}
}
// 调用生成水印
createWatermark('机密 - 张三');
</script></p>若只为某个特定区域(如一个div或图片容器)添加水印,可将Canvas的尺寸和位置限制在该容器内。
操作方法:
示例:为一个id为contentArea的div添加水印
MarketingBlocks AI
AI营销助理,快速创建所有的营销物料。
27
查看详情
const container = document.getElementById('contentArea');
const rect = container.getBoundingClientRect();
<p>const canvas = document.createElement('canvas');
canvas.width = rect.width;
canvas.height = rect.height;
canvas.style.cssText = <code> position: absolute; top: ${rect.top}px; left: ${rect.left}px; pointer-events: none; z-index: 999; opacity: 0.15; </code>;
document.body.appendChild(canvas);</p><p>// 在canvas上绘制水印(同上)
const ctx = canvas.getContext('2d');
ctx.font = 'bold 30px Arial';
ctx.fillStyle = 'gray';
ctx.rotate(-30 * Math.PI / 180);
ctx.fillText('内部资料', 50, 100);</p>除了文字,还可以绘制图片作为水印(如公司Logo)。
使用drawImage()方法:
const img = new Image();
img.src = 'logo.png';
img.onload = function() {
ctx.drawImage(img, 0, 0, 50, 50); // 绘制小图标
}
也可以结合用户信息动态生成水印,例如:
createWatermark(`仅限 ${userName} 查看`);基本上就这些。Canvas水印轻量、难以删除(除非截图后编辑),适合前端防误传播。注意:它不能防止截图,但能明确标识来源。实际项目中可封装成函数或组件调用,灵活复用。不复杂但容易忽略细节,比如字体加载、坐标变换和响应式适配。
以上就是HTML5代码如何实现水印效果 HTML5代码Canvas叠加层的制作的详细内容,更多请关注其它相关文章!
# 解决问题
# 网站自动优化咨询电话
# 苏州seo推广推荐公司
# php 网站优化
# 北辰区如何做好营销推广
# 营销推广服务费有比例限制
# 全网推广营销商标报价
# 电商平台seo优化广告
# 网络营销产品推广总结
# 网站排名优化谁家好一点
# 鹤壁网络营销推广软件
# 其上
# 创建一个
# 仅限
# 可将
# 只为
# html5代码
# 中文网
# 相关文章
# 还可以
# 如何实现
# micr
# win
# ai
# app
# html5
# go
# 前端
# html
# java
# javascript
# css
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
深入理解Python对象引用与链表属性赋值
极兔快递官网查询入口手机版 手机极兔快递登录查询入口官方
《美篇》取消会员自动续费方法
《地下城堡4:骑士与破碎编年史》墓穴挑战125攻略
MySQL多重关联查询:利用别名高效获取同一表的多个关联字段
嘀嗒顺风车如何开具电子发票
谷歌浏览器怎么把网页翻译成中文_Chrome网页翻译功能使用方法
不吃碳水化合物是健康减肥的好办法吗
Win10怎么设置快速启动 Win10开启快速启动设置方法
PHP utf8_encode 字符编码转换陷阱与解决方案
WooCommerce 购物车:始终显示所有交叉销售商品
大众点评了却看不到是怎么回事
智慧团建活动报名入口 智慧团建活动报名入口手机端官网
Python中处理嵌套字典与列表的数据提取与过滤教程
在Dash应用中自定义HTML标题和网站图标
响应式设计中动态背景颜色条的实现指南
优化 React onClick 事件处理:函数引用与箭头函数的对比
《procreate》绘制渐变效果教程
J*aScript类型数组_TypedArray使用
《植物大战僵尸3》火龙草作用介绍
j*a中赋值运算符是什么?
优化Google Charts Gauge:在数据库无数据时显示默认值
济南公交卡手机充值指南
小红书如何引流到私信?引流到私信有用吗?
鸿蒙单条备忘录如何加密
解决Flex容器横向滚动内容截断与偏移问题
《友玩*》创建群聊方法
猫眼app抢票快还是小程序快
《幻兽帕鲁》手游帕鲁捕捉技巧分享
京东快递包裹信息查询入口 京东快递官方查询平台入口
J*aScript二进制处理_ArrayBuffer与Blob
汽水音乐网页版登录 汽水音乐网页端官方入口
苹果手机如何清理系统缓存数据 iPhone非越狱清理垃圾文件的技巧【系统优化】
包子漫画官网链接官方地址 包子漫画在线观看官网首页入口
Django模型动态关联检查:高效管理复杂关系
电脑从睡眠中被自动唤醒怎么办_Windows唤醒源事件查看与禁用【解决】
解决 Vue 3 组件未定义错误:理解 createApp 与根组件的正确使用
126邮箱网页在线登录2025_126邮箱网页版入口官方地址
阿里旺旺电脑网页版入口 阿里旺旺电脑版网页登录入口
J*aScript与CSS动画:实现平滑顺序淡入淡出效果并解决显示冲突
圆通快递官网入口查询单号 手机版官方查询入口
PHP实现等比数列:构建数组元素基于前一个值递增的方法
lol小红书怎么|直播|?lol小红书|直播|是什么意思?
驱动人生:游戏修复指南
《爱南宁》认证电动车方法
利用Flexbox实现图片元素的二维布局:2x2网格排列指南
使用AI在VS Code中将代码从一种语言翻译成另一种
追剧达人如何发弹幕
C++如何实现单例模式_C++线程安全的单例模式写法
mysql导入sql文件能分批导入吗_mysql分批次导入大sql文件的实用技巧
2025-11-14
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。