背景

给视频和文档的div区域增加水印。以下代码可以在任意位置增加水印。

js代码实现

var now = getNow();
watermark({"watermark_txt":"A B C X Y Z "+now});
function watermark(settings) {//此处可以更改自己想要初始化的id。var ele = document.getElementById("myBody");//默认设置var 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: 20 //水印倾斜度数};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 page_width = Math.max(ele.scrollWidth, ele.clientWidth);var cutWidth = page_width * 0.0150;var page_width = page_width - cutWidth;//获取页面最大高度var page_height = Math.max(ele.scrollHeight, ele.clientHeight) ;//如果将水印列数设置为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));}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));//设置水印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';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);};};ele.appendChild(oTemp);
}function getNow() {var d = new Date();var year = d.getFullYear();var month = change(d.getMonth() + 1);var day = change(d.getDate());var hour = change(d.getHours());var minute = change(d.getMinutes());var second = change(d.getSeconds());function change(t) {if (t < 10) {return "0" + t;} else {return t;}}var time = year + '年' + month + '月' + day + '日 ' + hour + '时' + minute + '分' + second + '秒';return time;
}

js实现给html固定区域增加水印相关推荐

  1. HTML怎么限制每行字数,JS实现每行固定字数,自动换行

    JS实现每行固定字数,自动换行 autoWrap.html 原码 .wrap_focus{border-width: 3px;border-style: solid;border-color:oran ...

  2. 高德地图-2D地图下区域遮掩(只显示固定区域里的内容)

    最近遇到一个新的需求需用用到高德地图 公司需要只显示固定区域范围的地图,其余地方的地图都用透明遮罩覆盖 完成后如下图所示: 地图体验网址 刚开始的时候研究了半天高德地图的的JS API中只有一个区域遮 ...

  3. 微信小程序-增加水印(自定义内容)

    Number1 微信小程序增加水印 最近在整微信小程序,这里增加写自己最近用到的东西(仅为记录) 主要原则是增加一个水印的组件,新建components文件夹,在文件夹下面新建watermark组件 ...

  4. 改造Kindeditor之:自定义图片上传插件。 外加给图片增加水印效果的选择。

    场景: 编辑部人士编辑文章时需要在文章中上传图片.但上传图片时需要增加是否增加水印的选择(有可能是自己公司的原创作品).所以需要改造Kindeditor . 1: 删除Kindeitor 默认的参数对 ...

  5. 原生js-实现给图片增加水印

    使用原生js给图片增加水印 支持自定义 [ 水印旋转角度.字体大小.字体颜色.稠密度- ] 效果图 直接上代码(含注释) HTML代码 <img src="../images/birt ...

  6. vue 项目增加水印

    1.在utils文件夹添加水印文件 watermark.js 'use strict'let watermark = {}let setWatermark = (str) => {let id ...

  7. php中表头不跟着滑动,JS实现table表格固定表头且表头随横向滚动而滚动

    这篇文章主要介绍了JS实现table表格固定表头且表头可以随横向滚动而滚动,对js的朋友可以参考下本篇文章 先看一张效果图 思路: 1.头部用一个table并用一个p包裹着, 表格的具体内容用一个ta ...

  8. Midnight.js – 实现奇妙的固定头部切换效果

    Midnight.js 是一款 jQuery 插件,在页面滚动的时候实现多个头设计之间的切换,所以你总是有一个头与它下面的内容层叠,看起来效果很不错. Midnight.js 可以让你轻松实现这种切换 ...

  9. html 点击按钮js自增,JS实现点击按钮自动增加一个单元格的方法

    本文实例讲述了JS实现点击按钮自动增加一个单元格的方法.分享给大家供大家参考.具体分析如下: 这是一个网页在线自助生成表格的特效代码. 核心功能代码是JS实现,点击网页中的添加按钮,网页中自动增加一个 ...

最新文章

  1. redis(nosql数据库)
  2. 浮点数在内存中的存储方式
  3. Linux内存分配机制之伙伴系统和SLAB
  4. java学习(94):cpu随机调用线程测试
  5. 计算机d,计算机词汇d
  6. 基于DDD的.NET开发框架 - ABP依赖注入
  7. Java工作笔记-Spring Boot中使用Mybatis操作达梦数据库
  8. iPhone 6S GPU到底多强
  9. 【转载】堆和栈的内存分配
  10. php 数组中连续的数字,php数组中最近的次要数字
  11. xyplorer保存设置失败_将windows右键菜单添加到XYplorer
  12. linux编程:pthread
  13. 软件名称后缀含义?(如RC、RTL)
  14. 【打印机】mac上添加打印机
  15. TeamTalk IM_PDUBASE详解
  16. 开放平台-web实现QQ第三方登录
  17. 听完计算机知识讲座后感悟,教师计算机培训感言
  18. flutter 相机加入mask(遮罩层)
  19. python画八角星_Goc-N角星的绘制
  20. 给HttpClient添加Socks代理

热门文章

  1. 焊缝标注vlx实用程序_焊缝标注实例(记住这七个技巧,受益无穷)
  2. 添加商品php,php – 为首次购买者添加商品到购物车
  3. 聊一聊:MyBatis和Spring Data JPA的选择问题
  4. 将 Docker 踢出群聊后,Kubernetes 还能否欢快地蹦跶吗?
  5. 你必须收藏的Github技巧
  6. mysql8.0导出带数据的库表_MySQL8.0数据库导出与备份
  7. 单独的plsql链接数据库
  8. libopencv_core.so: file not recognized: File format not recognized
  9. torch nll_loss
  10. cannot use throw with exceptions disabled