通过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 相关文章推荐
JavaScript中的稀疏数组与密集数组[译]
Sep 17 Javascript
setTimeout()与setInterval()方法区别介绍
Dec 24 Javascript
javascript常见操作汇总
Sep 03 Javascript
jfinal与bootstrap的登录跳转实战演习
Sep 22 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
May 27 Javascript
详解基于mpvue的小程序markdown适配解决方案
May 08 Javascript
移动端(微信等使用vConsole调试console的方法
Mar 05 Javascript
Vue.js递归组件实现组织架构树和选人功能
Jul 04 Javascript
解决vue中使用proxy配置不同端口和ip接口问题
Aug 14 Javascript
谈一谈vue请求数据放在created好还是mounted里好
Jul 27 Javascript
详解vue中使用transition和animation的实例代码
Dec 12 Vue.js
vue 根据选择的月份动态展示日期对应的星期几
Feb 06 Vue.js
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
来自PHP.NET的入门教程
2006/10/09 PHP
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
php将会员数据导入到ucenter的代码
2010/07/18 PHP
用PHP写的基于Memcache的Queue实现代码
2011/11/27 PHP
jQuery 源码分析笔记(7) Queue
2011/06/19 Javascript
javascript用户注册提示效果的简单实例
2013/08/17 Javascript
javascript中style.left和offsetLeft的用法说明
2014/03/07 Javascript
如何使用HTML5地理位置定位功能
2015/04/27 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
基于Vue.js实现数字拼图游戏
2016/08/02 Javascript
Google 地图类型详解及示例代码
2016/08/06 Javascript
解析JavaScript模仿块级作用域
2016/12/29 Javascript
jQuery实现的简单悬浮层功能完整实例
2017/01/23 Javascript
AngularJS表格添加序号的方法
2017/03/03 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
浅谈vue首屏加载优化
2018/06/28 Javascript
如何基于JavaScript判断图片是否加载完成
2019/12/28 Javascript
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
2020/07/31 Javascript
[55:23]VGJ.T vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
Python进程间通信之共享内存详解
2017/10/30 Python
python字典快速保存于读取的方法
2018/03/23 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
详解Python中的type和object
2018/08/15 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
2020/03/16 Python
python+opencv实现移动侦测(帧差法)
2020/03/20 Python
Scrapy爬虫文件批量运行的实现
2020/09/30 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
python装饰器代码深入讲解
2021/03/01 Python
前后端结合实现amazeUI分页效果
2020/08/21 HTML / CSS
法国在线药房:Shop Pharmacie
2019/11/26 全球购物
法国亚马逊官方网站:Amazon.fr
2020/12/19 全球购物
计算机应用职专应届生求职信
2013/11/12 职场文书
贷款承诺书范文
2014/05/19 职场文书
食品安全汇报材料
2014/08/18 职场文书
公司借款担保书
2015/09/22 职场文书
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang