首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js页面增加水印

在JavaScript页面中增加水印通常是通过CSS和HTML5的Canvas元素来实现的。以下是一些基础概念、优势、类型、应用场景以及实现方法:

基础概念

  1. Canvas元素:HTML5提供的元素,用于在网页上绘制图形。
  2. CSS定位:用于控制元素在页面上的位置。

优势

  • 灵活性:可以自定义水印的内容、样式和位置。
  • 不可见性:水印通常设置为半透明,不会干扰用户查看主要内容。
  • 防伪性:可以防止内容被未经授权的复制或篡改。

类型

  • 文字水印:简单的文本信息,如“机密”、“内部资料”等。
  • 图片水印:使用特定的图片作为水印。
  • 动态水印:根据时间或其他条件动态改变的水印。

应用场景

  • 企业文档:保护敏感信息不被外泄。
  • 版权保护:在图片或视频上添加版权声明。
  • 网站安全:防止网页内容被轻易截图或爬取。

实现方法

以下是一个简单的示例代码,展示如何在页面上添加文字水印:

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Watermark Example</title>
<style>
  body {
    position: relative;
  }
  .watermark {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none; /* 让水印不影响页面的交互 */
    z-index: 9999; /* 确保水印在最上层 */
  }
  .watermark canvas {
    display: block;
  }
</style>
</head>
<body>

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

<script>
function addWatermark(text) {
  const watermarkDiv = document.getElementById('watermark');
  const canvas = document.createElement('canvas');
  const ctx = canvas.getContext('2d');
  const width = window.innerWidth;
  const height = window.innerHeight;
  canvas.width = width;
  canvas.height = height;

  // 设置水印样式
  ctx.globalAlpha = 0.1; // 透明度
  ctx.font = '20px Arial'; // 字体大小和类型
  ctx.fillStyle = '#000000'; // 字体颜色
  ctx.rotate(-0.1); // 旋转角度

  // 绘制水印
  ctx.fillText(text, width / 2, height / 2);

  // 将canvas添加到水印div中
  watermarkDiv.appendChild(canvas);

  // 监听窗口大小变化,重新绘制水印
  window.addEventListener('resize', () => {
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;
    ctx.clearRect(0, 0, width, height);
    ctx.fillText(text, width / 2, height / 2);
  });
}

// 添加水印
addWatermark('Confidential');
</script>

</body>
</html>

常见问题及解决方法

  1. 水印不显示
    • 确保watermark div的z-index足够高。
    • 检查CSS样式是否正确应用。
    • 确保Canvas元素已正确添加到DOM中。
  • 水印位置不正确
    • 调整Canvas的绘制逻辑,确保水印居中或按需定位。
    • 监听窗口大小变化事件,动态调整水印位置。
  • 水印透明度问题
    • 调整ctx.globalAlpha的值来控制透明度。

通过以上方法,你可以在JavaScript页面中灵活地添加水印,以满足不同的需求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

用js实现html页面水印

用js实现html页面水印要在 HTML 页面中添加水印并防止截图,可以使用 JavaScript。以下是实现的基本步骤:1、在 HTML 中添加一个 div 元素作为水印容器,并设置其样式。...2、使用 JavaScript 动态生成水印内容,并将其添加到水印容器中。3、通过 CSS 设置水印文本的样式,例如颜色、字体大小等。...4、使用 CSS 将水印容器置于所有其他元素的最顶层,从而覆盖整个页面。5、监听窗口的 resize 和 scroll 事件,以便及时更新水印位置。...使用 CSS 将水印容器置于最顶层,并禁用了其指针事件,以防止干扰用户操作。同时在窗口 resize 和 scroll 事件中更新水印位置,以适应页面变化。...此外,这个示例代码还使用 Canvas 绘制了一个与页面大小相同的黑色矩形,并将其与水印容器叠加在一起。

4.4K30
  • 【HarmonyOS NEXT】实现页面水印功能

    关键词:鸿蒙、水印、Watermark、页面、触摸问题注:本期文章同样适用 OpenHarmony 的开发在app开发过程中时常会出现敏感信息页面,为保护信息安全和及时的数据追踪,通常会采用给页面加水印的形式...,那么本期文章会介绍如何在鸿蒙应用中实现页面水印的功能。...触摸测试控制可参考官方文档:文档中心效果如下:如下代码使用 Canvas 画布绘制水印,计算当前屏幕展示水印个体个数进行渲染。当然也可以自行使用网格或其他布局实现效果。...private water1wh: number = 140 /** * 水印构造器 * @param waterText 水印文本 * @param fontSize 字号 *...anchor: "__container__", align: VerticalAlign.Center } }) .id("base") } // 在当前组件上,增加叠加自定义组件以作为该组件的浮层

    10810

    JS黑科技:水印防删

    实现的方式,可能有多种,比如:对图片、视频而言,可以在服务端完成水印,但对于文字信息类,一般只能在前端页面中进行水印添加。 本文分享一种图层式防删水印技术。...其效果是:在页面渲染完成后,由JavaScript进行图层水印添加,并会实时检测水印状态,如果水印被删除、隐藏、或设置为透明,都会重置水印。...MutationObserver是一个很有创意的接口,它可以监听页面元素变化,任何元素的修改,如节点的增减、属性值更新、文本内容的改动都会触发MutationObserve事件,在本例中,会监测两种事件...: 其实应用于产品或项目时,可将JS代码用JShaman进行混淆加密,以防止代码被分析识破从而被针对性的反制。...注:本文演示中是给div添加水印,实际应用此技术时,水印可添加给任意种类的元素内容。

    1.7K30

    前端基于DOM或者Canvas实现页面水印

    前言==我们会看到很多页面带有水印,但是怎么实现呢?...(1)水印盒子放到包裹水印图片的盒子里 (包裹水印图片的盒子包裹水印) (2)包裹水印图片的盒子放到被绑定元素之前 (3)被绑定元素放到裹水印图片的盒子里(不然被绑定元素与包裹水印图片的盒子层级同级)...缺点直接删除水印元素时,页面中的水印直接就被删除了,当然我们可以用MutationObserver对水印元素进行监听,删除时,我们再立即生成一个水印元素就可以了,具体方面在下面讲解。...思路整理配置水印的具体样式(大小,旋转角度,文字填充)设置水印(位置)监听dom变化(防止水印删除后页面不再展示水印)2....附:文中用到的js基础知识=============toDataURL用法toDataURL(type, encoderOptions),接收两个参数:type:图片类型,比如image/png、image

    33910

    前端基于DOM或者Canvas实现页面水印

    前言我们会看到很多页面带有水印,但是怎么实现呢?...)水印盒子放到包裹水印图片的盒子里 (包裹水印图片的盒子包裹水印)(2)包裹水印图片的盒子放到被绑定元素之前(3)被绑定元素放到裹水印图片的盒子里(不然被绑定元素与包裹水印图片的盒子层级同级)2.新建index.vue...缺点直接删除水印元素时,页面中的水印直接就被删除了,当然我们可以用MutationObserver对水印元素进行监听,删除时,我们再立即生成一个水印元素就可以了,具体方面在下面讲解。...思路整理配置水印的具体样式(大小,旋转角度,文字填充)设置水印(位置)监听dom变化(防止水印删除后页面不再展示水印)2....附:文中用到的js基础知识toDataURL用法toDataURL(type, encoderOptions),接收两个参数:type:图片类型,比如image/png、image/jpeg、image

    57650

    在Android采集视频过程中增加水印功能实现

    在Android采集视频过程中增加水印,并且水印包含一个变化的时间戳,这里考虑方案实现的时候,就想到了ffmpeg,ffmpeg包含很多filter能实现水印添加的功能。...基本实现方案是,Camera预览 -> 得到预览帧的bitmap -> 给bitmap通过ffmpeg 添加水印  -> ffmpeg把bitmap使用h264编码 -> 写文件。...其实ffmpeg添加水印功能在网上例子很多,也都大同小异,但在Android端,比较难搞的地方其实是ffmpeg编译出能带水印添加功能的so库文件,其中:ffmpeg的drawtext filter依赖...如下为doubango下编码前添加水印的部分代码: #   include  #   include <libavfilter/avfilter.h...(&frame_out);        av_frame_unref(frame_out);         return ret; }          //编码前先将bitmap的yuv数据添加水印

    2.3K10
    领券