|
|
@ -1,5 +1,5 @@ |
|
|
|
// 水印添加
|
|
|
|
export const watermark = (settings) => { |
|
|
|
export const watermark = (settings, className, type) => { |
|
|
|
//默认设置
|
|
|
|
var defaultSettings = { |
|
|
|
watermark_txt: settings.watermark_txt, |
|
|
@ -18,20 +18,6 @@ |
|
|
|
watermark_angle: 15, //水印倾斜度数
|
|
|
|
} |
|
|
|
|
|
|
|
//采用配置项替换默认值,作用类似jquery.extend
|
|
|
|
// if (arguments.length === 1 && typeof arguments[0] === 'object') {
|
|
|
|
// var src = arguments[0] || {}
|
|
|
|
// for (var keyS in src) {
|
|
|
|
// if (
|
|
|
|
// src[keyS] &&
|
|
|
|
// defaultSettings[keyS] &&
|
|
|
|
// src[keyS] === defaultSettings[keyS]
|
|
|
|
// )
|
|
|
|
// continue
|
|
|
|
// else if (src[keyS]) defaultSettings[keyS] = src[keyS]
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
|
|
|
|
var oTemp = document.createDocumentFragment() |
|
|
|
|
|
|
|
//获取页面最大宽度
|
|
|
@ -39,11 +25,7 @@ |
|
|
|
var cutWidth = page_width * 0.015 |
|
|
|
page_width = page_width - cutWidth |
|
|
|
//获取页面最大高度
|
|
|
|
var page_height = |
|
|
|
Math.max( |
|
|
|
document.body.scrollHeight, |
|
|
|
document.body.clientHeight |
|
|
|
) + 650 |
|
|
|
var page_height = Math.max( document.body.scrollHeight, document.body.clientHeight ) + 650 |
|
|
|
// var page_height = document.body.scrollHeight+document.body.scrollTop;
|
|
|
|
//如果将水印列数设置为0,或水印列数设置过大,超过页面最大宽度,则重新计算水印列数和水印x轴间隔
|
|
|
|
if ( |
|
|
@ -91,66 +73,97 @@ |
|
|
|
(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) |
|
|
|
) |
|
|
|
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 |
|
|
|
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 |
|
|
|
x = defaultSettings.watermark_x + (defaultSettings.watermark_width + defaultSettings.watermark_x_space) * j |
|
|
|
|
|
|
|
let dom = document.getElementsByClassName(className) |
|
|
|
let canvas = document.createElement('canvas') |
|
|
|
let cxt = canvas.getContext('2d') |
|
|
|
let divImg = document.createElement('div') |
|
|
|
|
|
|
|
let imgScale = 0.5 |
|
|
|
// canvas.width = 200
|
|
|
|
|
|
|
|
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' //pointer-events:none 让水印不遮挡页面的点击事件
|
|
|
|
//mask_div.style.border="solid #eee 1px";
|
|
|
|
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) |
|
|
|
mask_div.appendChild(document.createTextNode(defaultSettings.watermark_txt)) |
|
|
|
|
|
|
|
if(type=="img"){ |
|
|
|
//创建新的图片对象
|
|
|
|
let img = new Image(); |
|
|
|
//指定图片的URL
|
|
|
|
img.src = defaultSettings.watermark_txt; |
|
|
|
//浏览器加载图片完毕后再绘制图片
|
|
|
|
img.onload = function() { |
|
|
|
//cxt.drawImage(img,0,0);
|
|
|
|
cxt.rotate(-20 * Math.PI / 180) |
|
|
|
let whScale = img.width / img.height |
|
|
|
cxt.clearRect(0, 0, canvas.width, canvas.height); |
|
|
|
cxt.drawImage(img, //规定要使用的图像、画布或视频。
|
|
|
|
0, 0, //开始剪切的 x 坐标位置。
|
|
|
|
img.width, img.height, //被剪切图像的高度。
|
|
|
|
0, 100,//在画布上放置图像的 x 、y坐标位置。
|
|
|
|
img.width * imgScale, img.height * imgScale //要使用的图像的宽度、高度
|
|
|
|
) |
|
|
|
divImg.style.opacity = 0.5 |
|
|
|
divImg.style.background = 'url(' + canvas.toDataURL('image/png') + ') left top repeat' |
|
|
|
drawImage(divImg,dom) |
|
|
|
} |
|
|
|
}else{ |
|
|
|
//设置水印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) |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var drawImage = function (div,dom) { |
|
|
|
div.style.pointerEvents = 'none' |
|
|
|
div.className = 'weterbox' |
|
|
|
div.style.top = 0 |
|
|
|
div.style.left = 0 |
|
|
|
div.style.position = 'absolute' |
|
|
|
div.style.zIndex = '100000' |
|
|
|
div.style.width = '100%' |
|
|
|
div.style.height = '100%' |
|
|
|
// console.log(dom)
|
|
|
|
if( dom.length > 0){ |
|
|
|
for(let i = 0; i< dom.length;i++){ |
|
|
|
let child = dom[i].getElementsByClassName('weterbox') |
|
|
|
if(child.length > 0){ |
|
|
|
dom[i].removeChild(child[0]) |
|
|
|
} |
|
|
|
dom[i].appendChild(div.cloneNode(true)) |
|
|
|
// console.log(i,dom[i])
|
|
|
|
} |
|
|
|
} |
|
|
|
} |