使用JS给页面添加水印效果

用js给网页加上水印背景 function watermark(settings) { //默认设置 var defaultSettings={ watermark_txt:"text", watermark_x:20,//水印起始位置x轴坐标 watermark_y:20,//水印起始位置Y轴坐标 watermark_rows:... 阅读详情

原文:https://www.cnblogs.com/Miracle-ZLZ/p/9340249.html

此方法可以给整个页面或某个div添加水印效果。

1、普通使用方式:

$(document).ready(function() {
        var watermark_txt = "测试效果" + getDate();
        watermark({"watermarl_element":"watermark-wrapper", "watermark_txt":watermark_txt});  
});

注:watermark-wrapper是div的id名称。 

2、如果项目中有ajax请求,等待所有ajax请求结束后再去加载,这样可以避免div存在滚动条时水印显示不全 

 $(document).ready(function() {
        var watermark_txt = "测试效果" + getDate();
        $.when($.ajax(), $.ajax()).then(function(){
            watermark({"watermarl_element":"watermark-wrapper", "watermark_txt":watermark_txt});
        });
    });
3、效果图:

 

 4、代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>页面添加水印</title>
    <script src="js/jquery.js"></script>
    <style>
        .watermark-wrapper{
            height: 1000px;
        }
    </style>
</head>
<body>
<div id="watermark-wrapper" class="watermark-wrapper">
    
</div>

</body>
<script>

    $(document).ready(function() {
       var watermark_txt = "测试效果" + getDate();
       watermark({"watermarl_element":"watermark-wrapper", "watermark_txt":watermark_txt});
    });

    function watermark(settings) {
        //默认设置
        var defaultSettings={
            watermarl_element:"body",
            watermark_txt:"",
            watermark_x:10,//水印起始位置x轴坐标
            watermark_y:10,//水印起始位置Y轴坐标
            watermark_rows:2000,//水印行数
            watermark_cols:2000,//水印列数
            watermark_x_space:50,//水印x轴间隔
            watermark_y_space:50,//水印y轴间隔
            watermark_color:'#d7d7d7',//水印字体颜色
            watermark_alpha:0.5,//水印透明度
            watermark_fontsize:'15px',//水印字体大小
            watermark_font:'微软雅黑',//水印字体
            watermark_width:500,//水印宽度
            watermark_height:50,//水印长度
            watermark_angle:15//水印倾斜度数
        };
        //采用配置项替换默认值,作用类似jquery.extend
        if(arguments.length===1&&typeof arguments[0] ==="object" ) {
            var src=arguments[0]||{};
            for(key in src) {
                if(src[key]&&defaultSettings[key]&&src[key]===defaultSettings[key]){
                    continue;
                } else if(src[key]){
                    defaultSettings[key]=src[key];
                }
            }
        }

        var oTemp = document.createDocumentFragment();

        var maskElement=document.getElementById(defaultSettings.watermarl_element) || document.body;
        //获取页面最大宽度
        var page_width = Math.max(maskElement.scrollWidth,maskElement.clientWidth);
        //获取页面最大高度
        var page_height = Math.max(maskElement.scrollHeight,maskElement.clientHeight,maskElement.scrollTop);
        //水印数量自适应元素区域尺寸
        defaultSettings.watermark_cols=Math.ceil(page_width/(defaultSettings.watermark_x_space+defaultSettings.watermark_width));
        defaultSettings.watermark_rows=Math.ceil(page_height/(defaultSettings.watermark_y_space+defaultSettings.watermark_height));
        var x;
        var y;
        for (var i = 0; i < defaultSettings.watermark_rows; i++) {
            y = defaultSettings.watermark_y + (defaultSettings.watermark_y_space + defaultSettings.watermark_height) * i;
            for (var j = 0; j < defaultSettings.watermark_cols; j++) {
                x = defaultSettings.watermark_x + (defaultSettings.watermark_width + defaultSettings.watermark_x_space) * j;
                var mask_div = document.createElement('div');
                mask_div.id = 'mask_div' + i + j;
                mask_div.className = 'mask_div';
                //mask_div.appendChild(document.createTextNode(defaultSettings.watermark_txt));
                mask_div.innerHTML=(defaultSettings.watermark_txt);
                //设置水印div倾斜显示
                mask_div.style.webkitTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                mask_div.style.MozTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                mask_div.style.msTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                mask_div.style.OTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                mask_div.style.transform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
                mask_div.style.visibility = "";
                mask_div.style.position = "absolute";
                mask_div.style.left = x + 'px';
                mask_div.style.top = y + 'px';
                mask_div.style.overflow = "hidden";
                mask_div.style.zIndex = "1029"; // 9999
                // pointer-events:none  让水印不遮挡页面的点击事件
                mask_div.style.pointerEvents='none';
                // 设置边框
                // mask_div.style.border="solid #eee 1px";
                // 兼容IE9以下的透明度设置
                mask_div.style.filter="alpha(opacity=50)";
                mask_div.style.opacity = defaultSettings.watermark_alpha;
                mask_div.style.fontSize = defaultSettings.watermark_fontsize;
                mask_div.style.fontFamily = defaultSettings.watermark_font;
                mask_div.style.color = defaultSettings.watermark_color;
                mask_div.style.textAlign = "center";
                mask_div.style.width = defaultSettings.watermark_width + 'px';
                mask_div.style.height = defaultSettings.watermark_height + 'px';
                mask_div.style.display = "block";
                oTemp.appendChild(mask_div);
            };
        };
        maskElement.appendChild(oTemp);
    }

    function getDate() {
        var d = new Date();
        var year = d.getFullYear() >= 10 ? d.getFullYear() : ('0'+d.getFullYear());
        var month = d.getMonth()+1 >= 10 ? d.getMonth()+1 : ('0'+d.getMonth()+1);
        var day = d.getDate() >= 10 ? d.getDate() : ('0'+d.getDate());
        var hour = d.getHours() >= 10 ? d.getHours() : ('0'+d.getHours());
        var minute = d.getMinutes() >= 10 ? d.getMinutes() : ('0'+d.getMinutes());
        var second = d.getSeconds() >= 10 ? d.getSeconds() : ('0'+d.getSeconds());
        return year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second;
    }

</script>
</html>

 

在Vue中实现全局水印功能 请根据你的具体需求调整上述代码,确保水印效果符合项目要求。如果使用自定义实现,记得处理好页面滚动和响应式布局的情况,以确保水印始终可见。: 使用CSS来定义水印的位置和样式。: 如果不想使用外部库,你可以使用CSS和JavaScript来创建自定义的水印。来检测DOM变化,然后动态添加水印元素。 阅读详情

相关推荐

前端实现水印效果的多种方案

本文介绍了几种前端水印方案,大家可以根据具体项目选择适合的方法来实现水印效果。在这个示例中,我们创建了一个Canvas元素,并使用JavaScript来绘制水印。你可以根据需要配置水印的文本、字体、颜色等属性,并使用库提供的方法进行初始化和加载。这种方法适用于需要在整个页面或特定元素上添加水印的情况,且不需要通过Canvas来绘制水印。在这个示例中,我们使用SVG(可缩放矢量图形)来创建水印。使用CSS来添加重复水印的方法是将水印图片作为背景图片,并使用。在这个示例中,我们创建了一个包含水印的容器元素。

菜菜程序员 7262

vue -- watermark水印添加方法

作者:蛙哇 原文链接:https://segmentfault.com/a/1190000022055867 来源:segmentfault 前言 项目生成公司水印是很普遍的需求,下面是vue项目生产水印的方法。话不多说,复制粘贴就可以马上解决你的需求。 步骤1 创建watermark.js文件。目录结构 /** 水印添加方法 */ let setWatermark = (str1, str2) => { let id = '1.23452384164.123412..

qq_36396822的博客 2902

vue给页面添加水印,或者给iframe添加水印

需要往哪里添加就给哪里添加ID

douguaiwo521521的博客 1466

VUE 加水印

1.首先在main.js引入watermark.js,并在vue原型上添加$watermark属性作为全局水印的实例,在实例化时如果不传targetNode参数,则会将水印节点添加到body下面,即为全局水印。// 水印节点的背景图片位置。this.setWatermark("box1", ["水印1", " 局部水印2"], { width: 130 });原文链接:https://blog.csdn.net/qq_35408366/article/details/128549366。

zjbxa的博客 1797

watermark.js生成文字水印或图片水印

生成文字水印或者是图片水印,需求是可预览水印,水印文字可自行赋值,图片可自己上传进行赋值就可,如果要添加其他种类水印,在watermarkjs里可自行添加测试,从其他博客找的进行了修改

域用户无法修改密码问题的解决方案

问题描述:加域的电脑无法更改密码,提示“无法更新密码,为新密码提供的值不符合字符域的长度、复杂度或历史要求”。 问题原因:域控制器中相关设置问题,主要如下图所示(如启用复杂性、最短期限和强制密码历史) 解决方案:在域控制器中更改对应的密码策略即可: ① 禁用复杂性要求 ② 最短使用期限改为0天 ③ 强制密码历史改为0 如果出现无法更改的情况,如下图箭头所指的图标所示 代表需要在域控制器的组策...

运维日记 3万+

JS为页面添加水印效果

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>水印</title> <style> #water-div{pointer-events:none;position:fixed;top:0;left:0;right:0;bottom:0;} .mask_div{pointer-events:none...

rhx_1989的专栏 1446

基于Ansys Fluent和Mechanical的血管稳态流固耦合模型

流固耦合模型在医学中也会被用到,本次小编为大家带来针对人造血管内血液流动的仿真实例。 在开物云平台上找到Workbench 点击进入:https://cloud.yuansuan.cn/?user_source=community 在左侧的Toolbox中找到对应的模块:Fluid Flow(Fluent)和Static Structure 双击“Geometry”,进入建模功能 文件-打开-找到保存的模型文件 退回到主界面,在fluid flow(Fluent)中找到mesh

huasheng233的博客 3903

使用js给页面显示的图片添加水印效果

功能描述:使用Jquery 给页面的图片添加 版权信息水印。 这里的水印并不是真的把每一张图片上都添加了水印。而是在图片的上方添加了一个层,层中包含了水印图片效果就像是图片上加了水印。 功能原理:1,使用jquery 遍历页面的所有img标签,取得其位置信息 2,在body里边追加一个div,div中放水印图片,根据1中取得的位置,来确定水...

weixin_33708432的博客 511

SAP PI实战:5分钟搞定REST适配器同步接口配置(含Postman测试技巧)

本文详细介绍了如何在SAP PI中快速配置REST适配器同步接口,包括ESR设计、集成流配置及Postman测试技巧。通过实战步骤和关键参数设置,帮助开发者高效实现系统集成,特别适合需要实时数据交互的业务场景。

weixin_33738555的博客 485

由异常的测试眼图引发的深入思考

信号测试中出现“双眼皮”的眼图测试效果,可能的导致因素总结如下:PCB通道阻抗设计不匹配,负载端出现严重反射;发射端采用了不当的信号预处理;接收器均衡处理不当;通道串扰严重... 基于以上的假设,本文就逐一分析下这些因素到底是如何对正常的信号眼图造成影响的。

一只豌豆象的博客 3057

vue中使用 canvas给页面添加水印

封装公共添加水印的方法: // utils/watermark.js /**入参: @text: 传入水印需要展示的文本; @renderDom:要给哪个元素加水印,默认body; */ var watermark = {} var setWatermark = function(text,renderDom=document.body){ var id = '1.23345566.3333344'; if(document.getElementById(id)!==null){

m0_45382009的博客 928

[Dify]-进阶5- 使用 Dify 构建多轮对话的客服机器人

本文介绍了如何利用Dify平台构建智能客服系统,重点阐述了ChatFlow框架的应用。系统支持多轮对话、业务接口集成和话术策略管理,具备订单查询、退货申请等核心功能。通过Classifier节点实现意图识别,借助Router节点分流处理流程,并结合API插件实现业务数据对接。文章还提供了部署调试、会话优化和监控分析的具体方法,强调模块化设计和插件化集成的重要性,为构建功能完善的智能客服系统提供了完整解决方案。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 1652

网页加文字水印

新建一个画布,将文字内容画到画布上创建一个div,背景图用刚刚画布的内容,并设置为重复。将这个div添加到body下面,设置它的不透明度,不检测任何鼠标事件,zIndex最低。启动一个定时任务,定期移除并重新添加(更新水印的时间)

liuzhenghua66的博客 713

YOLOv8 交通违规检测各个场景的实际应用

本文介绍了基于YOLOv8的交通违规检测系统在不同场景下的应用实现。系统可检测闯红灯、超速、违停和不系安全带等多种违规行为,针对每种场景提供了具体的技术方案和Python实现代码。其中闯红灯检测结合信号灯状态分析,超速检测通过距离时间计算速度,违停检测采用长时间跟踪策略,安全带检测则需更高精度识别。文章还展示了如何整合各功能构建综合交通监管系统,并总结了不同应用场景的技术要点和优化方向,为智能交通管理提供了实用解决方案。

u010117029的博客 293

【nvidia-B200 生产环境】NVIDIA 570.124.06+Cuda12.8 Ubuntu22.04 nccl-test 一键部署脚本(免修改复制即用)

目录1. 初始化与日志记录2. 安装基础工具与配置更新3. NVIDIA 驱动安装 570.124.064. 安装 Mellanox OFED 24.10-2.1.8.05. 安装 CUDA 12.86. 安装 NCCL 和测试7. 配置 rc.local 和其他优化8. B200 单独步骤9. 最终测试与重启10. 完整生产脚本,复制即可直接使用总结 功能: 设置日志目录和日志文件路径。 使用 命令将标准输出和错误输出同时写入日志文件和终端。 记录脚本开始时间,并计算开始的秒数

jundao1997的专栏 2786

通过js在web前端增加水印

展示效果: 前面页面添加此方法: /** *settings:{watermark_txt:"明源测试"} */ functionwatermark(settings){ //默认设置 vardefaultSettings={ watermark_txt:"text", watermark_x:20,//水印...

loveuo86的专栏 3366

基于YOLOv5s的RK3588多线程部署16FPS暴涨到120FPS 轻量化深度学习部署实战教程(包括性能优化与加速)37

本文介绍了如何在RK3588平台上利用线程池优化YOLOv5模型的推理性能。RK3588内置3个NPU核心,支持多核并行处理。作者设计了一个线程池架构:1个线程负责数据读取,10个线程处理NPU运算,1个线程输出结果。该架构包含任务队列、线程管理和工作线程三个核心组件,通过合理设置线程数、任务队列大小等参数确保性能稳定。文章提供了详细的C++实现代码,包括线程池初始化、任务提交、结果获取等功能模块,并讨论了多线程同步和内存管理的关键技术要点。该方案可显著提升深度学习模型在嵌入式设备上的部署效率。

FJN110的博客 9222

给页面添加水印

【代码】给页面添加水印。

T70H78的博客 156

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

整个网页添加水印

在要添加水印的网页中增加以下代码。编写waterMark.js。

zhourongxiang1的博客 334

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

实时状态中实现添加水印未连接 代码记录

1、实时状态中实现添加水印未连接 代码记录,通过在网上找到了js为页面添加水印的方法,后来经过自己的改进,可以实现为页面部分元素添加水印,最终效果如下图: 1、自己测试的效果如下: 参考代码如下: <!DOCTYPE html> <html> <head> <style> .mask_div { /* vertical-align: central; text-a..

178

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

给html页面添加水印

效果 给html加水印的...

SummerGao 1151

vue实现水印

【代码】vue实现水印。

jwhailc的博客 124

给jsp页面添加水印

给jsp页面添加水印 直接上代码,在jsp页面直接添加下面代码即可: <style type="text/css" media="screen"> body{background-color: #eef1f8;} #one{padding: 10px 15px;background-color: #FFFFFF;background-image: url(http://pic.58pi...

llb522628的博客 5779

基于vue.js的网页端给div加文字水印

// 对应文件引入包含下面内容的js文件,并且顺序在引入vue.js之后 <div class="title" v-watermark></div> js文件 //vue的自定义指令 Vue.directive('watermark',(el,binding)=>{ let text1 = "文字一"; let time = new Date; // 当前日期的月日时分 let text2 = (time.getMonth() + 1) + "

qq_39993715的博客 1023
上一篇: 图片轮播——Swiper实例
下一篇: MySQL父查询子、子查询父
tansci
博客等级 码龄9年 335粉丝 107原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值