web建站教程
  1. 首页
  2. vuejs
  3. js
  4. 好玩
  5. seo教程
  6. 前端知识
  7. 百度echarts
  8. 更多
    php入门
    nodejs
    mockjs
    reactjs
    mysql
    wordpress
    织梦cms
    帝国cms
    git教程
    IT知识
    模板大全
    休息站

js实现图片、文字水印效果

551 ℃
     

1、代码插件

(function(watermark) {
  window.watermarkdivs = [];
  // 加载水印
  var loadMark = function(settings) {
    var defaultSettings = {
        watermark_txt: "text",
        watermark_x: 20, //水印起始位置x轴坐标
        watermark_y: 20, //水印起始位置Y轴坐标
        watermark_rows: 0, //水印行数
        watermark_cols: 0, //水印列数
        watermark_x_space: 100, //水印x轴间隔
        watermark_y_space: 50, //水印y轴间隔
        watermark_color: '#000000', //水印字体颜色
        watermark_alpha: 0.5, //水印透明度,要求设置在大于等于0.005
        watermark_fontsize: '18px', //水印字体大小
        watermark_font: '微软雅黑', //水印字体
        watermark_width: 150, //水印宽度
        watermark_height: 100, //水印长度
        watermark_angle: 15, //水印倾斜度数
        watermark_bg_alpha: 0.5 //加透明度导致隐形水印无法读取
    };
    //采用配置项替换默认值,作用类似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];
        }
    }
    
    if (window.watermarkdivs && window.watermarkdivs.length > 0) {
        document.body.removeChild(document.getElementById("otdivid"));
        window.watermarkdivs = [];
    }
    
    //获取页面最大宽度
    var page_width = Math.max(document.body.scrollWidth, document.body.clientWidth);
    //获取页面最大长度
    var page_height = Math.max(document.body.scrollHeight, document.body.clientHeight);
    
    // 创建文档碎片
    var oTemp = document.createDocumentFragment();
    //创建水印外壳div
    var otdiv = document.getElementById("otdivid");
    if (!otdiv) {
      otdiv = document.createElement('div');
      otdiv.id = "otdivid";
      otdiv.style.pointerEvents = "none";
      document.body.appendChild(otdiv);
    }
    
    //如果将水印列数设置为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');
        var oText = document.createTextNode(defaultSettings.watermark_txt);
        mask_div.appendChild(oText);
        // 设置一张水印相关属性start
        mask_div.id = 'mask_div' + i + j;
        //设置水印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.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";
        //设置一张水印相关属性end
        //附加到文档碎片中
        otdiv.appendChild(mask_div);
        
        window.watermarkdivs.push(otdiv); //控制页面大小变化时水印字体
      };
    };
    //一次性添加到document中
    document.body.appendChild(oTemp);
  };
  
  watermark.load = function(settings) {
    window.onload = function() {
      loadMark(settings);
    };
    window.onresize = function() {
      loadMark(settings);
    };
  };
  
})(window.watermark = {});

2、代码引入

watermark.load({ watermark_txt: "我是水印,我来自https://ipkd.cn/" });

介绍一个nodejs实现图片拼接插件

织梦cms解决webp格式图片上传失败

js文字随机颜色和大小

图片优化对网站有什么好处?

dede织梦手机站去除文章内容中图片的宽高达到自

标签: 图片, 字体大小, 水印

上面是“js实现图片、文字水印效果”的全面内容,想了解更多关于 js 内容,请继续关注web建站教程。

当前网址:https://ipkd.cn/webs_2108.html

声明:本站提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请发送到邮箱:admin@ipkd.cn,我们会在看到邮件的第一时间内为您处理!

当前位置: 网站首页 > js
本文共计4986个字,预计阅读时长34分钟
生活小工具,收录了80多款小工具
上一篇: win7系统设置防火墙报0x8007042c错误解决方法
下一篇: 国家送给全国人民的9个免费神器(赶紧收藏)
x 打工人ai神器