通过js给网页加上水印背景实例


Posted in Javascript onJune 17, 2019

水印方法

export function watermark(settings) {
//默认设置
let defaultSettings={
watermark_txt:"text",
watermark_x:20,//水印起始位置x轴坐标
watermark_y:20,//水印起始位置Y轴坐标
watermark_rows:20,//水印行数
watermark_cols:20,//水印列数
watermark_x_space:100,//水印x轴间隔
watermark_y_space:50,//水印y轴间隔
watermark_color:'#aaa',//水印字体颜色
watermark_alpha:0.4,//水印透明度
watermark_fontsize:'15px',//水印字体大小
watermark_font:'微软雅黑',//水印字体
watermark_width:210,//水印宽度
watermark_height:80,//水印长度
watermark_angle:15//水印倾斜度数
};
Object.assign(defaultSettings, settings);
let oTemp = document.createDocumentFragment();
//获取页面最大宽度
let p_width = Math.max(document.body.scrollWidth,document.body.clientWidth);
let cutWidth = p_width*0.0150;
let page_width=p_width-cutWidth;
//获取页面最大高度
let page_height = Math.max(document.body.scrollHeight,document.body.clientHeight)+450;
// let page_height = document.body.scrollHeight+document.body.scrollTop;
//如果将水印列数设置为0,或水印列数设置过大,超过页面最大宽度,则重新计算水印列数和水印x轴间隔
if (defaultSettings.watermark_cols === 0 || (parseInt(defaultSettings.watermark_x + defaultSettings.watermark_width *defaultSettings.watermark_cols + defaultSettings.watermark_x_space * (defaultSettings.watermark_cols - 1)) > page_width)) {
defaultSettings.watermark_cols = parseInt((page_width-defaultSettings.watermark_x+defaultSettings.watermark_x_space) / (defaultSettings.watermark_width + defaultSettings.watermark_x_space));
defaultSettings.watermark_x_space = parseInt((page_width - defaultSettings.watermark_x - defaultSettings.watermark_width * defaultSettings.watermark_cols) / (defaultSettings.watermark_cols - 1));
}
//如果将水印行数设置为0,或水印行数设置过大,超过页面最大长度,则重新计算水印行数和水印y轴间隔
if (defaultSettings.watermark_rows === 0 || (parseInt(defaultSettings.watermark_y + defaultSettings.watermark_height * defaultSettings.watermark_rows + defaultSettings.watermark_y_space * (defaultSettings.watermark_rows - 1)) > page_height)) {
defaultSettings.watermark_rows = parseInt((defaultSettings.watermark_y_space + page_height - defaultSettings.watermark_y) / (defaultSettings.watermark_height + defaultSettings.watermark_y_space));
defaultSettings.watermark_y_space = parseInt(((page_height - defaultSettings.watermark_y) - defaultSettings.watermark_height * defaultSettings.watermark_rows) / (defaultSettings.watermark_rows - 1));
}
let x;
let y;
for (let i = 0; i < defaultSettings.watermark_rows; i++) {
y = defaultSettings.watermark_y + (defaultSettings.watermark_y_space + defaultSettings.watermark_height) * i;
for (let j = 0; j < defaultSettings.watermark_cols; j++) {
x = defaultSettings.watermark_x + (defaultSettings.watermark_width + defaultSettings.watermark_x_space) * j;
let 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));
//设置水印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 = "9999";
mask_div.style.pointerEvents='none';//pointer-events:none 让水印不遮挡页面的点击事件
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);
};
};
document.body.appendChild(oTemp);
}

使用方法

import { watermark } from './../common/watermark';
watermark({watermark_txt: '你要添加的水印'});

效果演示

通过js给网页加上水印背景实例

源码地址

https://github.com/artdong/antd-admin

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
PHP结合jQuery实现的评论顶、踩功能
Jul 22 Javascript
jQuery热气球动画半透明背景的后台登录界面代码分享
Aug 28 Javascript
原生JS实现-星级评分系统的简单实例
Aug 21 Javascript
实例解析angularjs的filter过滤器
Dec 14 Javascript
如何使用JS在HTML中自定义字符串格式化
Jul 20 Javascript
js禁止表单重复提交
Aug 29 Javascript
解决npm安装Electron缓慢网络超时导致失败的问题
Feb 06 Javascript
浅谈VUE监听窗口变化事件的问题
Feb 24 Javascript
Node.JS循环删除非空文件夹及子目录下的所有文件
Mar 12 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
Feb 22 Javascript
Node 搭建一个静态资源服务器的实现
May 20 Javascript
JavaScript前后端JSON使用方法教程
Nov 23 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
Jun 17 #Javascript
通过实例解析js简易模块加载器
Jun 17 #Javascript
如何从头实现一个node.js的koa框架
Jun 17 #Javascript
javascript定时器的简单应用示例【控制方块移动】
Jun 17 #Javascript
深入解析koa之异步回调处理
Jun 17 #Javascript
JS中数据结构与算法---排序算法(Sort Algorithm)实例详解
Jun 17 #Javascript
详解element-ui设置下拉选择切换必填和非必填
Jun 17 #Javascript
You might like
mysql建立外键
2006/11/25 PHP
php教程之魔术方法的使用示例(php魔术函数)
2014/02/12 PHP
PHP文件上传判断file是否己选择上传文件的方法
2014/11/10 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
2015/09/25 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
2019/06/08 PHP
Prototype Function对象 学习
2009/07/12 Javascript
nodejs中操作mysql数据库示例
2014/12/20 NodeJs
jQuery旋转木马式幻灯片轮播特效
2015/12/04 Javascript
详解JavaScript正则表达式之分组匹配及反向引用
2016/03/09 Javascript
基于node.js之调试器详解
2017/08/22 Javascript
vue指令只能输入正数并且只能输入一个小数点的方法
2018/06/08 Javascript
微信小程序网络封装(简单高效)
2018/08/06 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
element-ui上传一张图片后隐藏上传按钮功能
2019/05/22 Javascript
Vue实现简单的留言板
2020/10/23 Javascript
在vue中使用inheritAttrs实现组件的扩展性介绍
2020/12/07 Vue.js
详解Python的迭代器、生成器以及相关的itertools包
2015/04/02 Python
python实现自动重启本程序的方法
2015/07/09 Python
Django的信号机制详解
2017/05/05 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
2020/04/23 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
2019/06/13 Python
python多线程http压力测试脚本
2019/06/25 Python
Python处理时间日期坐标轴过程详解
2019/06/25 Python
Python开发之pip安装及使用方法详解
2020/02/21 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
Django web自定义通用权限控制实现方法
2020/11/24 Python
如何用border-image实现文字气泡边框的示例代码
2020/01/21 HTML / CSS
Darphin迪梵官网: 来自巴黎,植物和精油调制的护肤品牌
2016/10/11 全球购物
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
酒店优秀员工事迹材料
2014/06/02 职场文书
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
2015年教师新年寄语
2014/12/08 职场文书
亲属关系公证书样本
2015/01/23 职场文书
2016年优秀团员事迹材料
2016/02/25 职场文书
开发者首先否认《遗弃》被取消的传言
2022/04/11 其他游戏
Android开发EditText禁止输入监听及InputFilter字符过滤
2022/06/10 Java/Android