• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    给原生html中添加水印遮罩层的实现示例

    发布者: Error | 发布时间: 2025-6-16 12:26| 查看数: 61| 评论数: 0|帖子模式

    效果图

    代码
    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4.     <meta charset="UTF-8">
    5.     <meta http-equiv="X-UA-Compatible" content="IE=edge">
    6.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7.     <title>水印遮罩</title>
    8. </head>
    9. <style>
    10.     .watermark_mask {
    11.         position: fixed;
    12.         top: 10px;
    13.     }

    14.     .hello {
    15.         width: 500px;
    16.         height: 2048px;
    17.         margin: 0 auto;
    18.         background-color: pink;
    19.     }
    20. </style>
    21. <body>
    22.     <div class="hello">
    23.         Hello World

    24.         <div style="margin-top: 600px;">Hello World 2</div>
    25.         <div style="margin-top: 1200px;">Hello World 3</div>
    26.     </div>
    27.     <div id="watermarkId" class="watermark_mask"></div>
    28.     <script>
    29.         const watermarkId = "watermarkId";

    30.         // 水印遮罩函数
    31.         function watermarkUtils(settings, id) {
    32.             //默认设置
    33.             var defaultSettings={
    34.                 watermark_txt: "text",
    35.                 watermark_x: 10,//水印起始位置x轴坐标
    36.                 watermark_y: 20,//水印起始位置Y轴坐标
    37.                 watermark_rows: 55,//水印行数
    38.                 watermark_cols: 55,//水印列数
    39.                 watermark_x_space: 10,//水印x轴间隔
    40.                 watermark_y_space: 10,//水印y轴间隔
    41.                 watermark_color: '#000000',//水印字体颜色
    42.                 watermark_alpha: 0.2,//水印透明度
    43.                 watermark_fontsize: '15px',//水印字体大小
    44.                 watermark_font: '微软雅黑',//水印字体
    45.                 watermark_width: 50,//水印宽度
    46.                 watermark_height: 20,//水印长度
    47.                 watermark_angle: 25//水印倾斜度数
    48.             };

    49.             //采用配置项替换默认值,作用类似jquery.extend
    50.             if(typeof settings === "object") {
    51.                 var src = settings;
    52.                 for(let key in src) {
    53.                     if(src[key] && defaultSettings[key] && src[key] === defaultSettings[key])
    54.                     continue;
    55.                     else if(src[key])
    56.                     defaultSettings[key]=src[key];
    57.                 }
    58.             }

    59.             var oTemp = document.createDocumentFragment();
    60.             // var oTemp = document.createElement("div");

    61.             //获取页面最大宽度
    62.             var page_width = Math.max(document.body.scrollWidth,document.body.clientWidth);
    63.             //获取页面最大长度
    64.             var page_height = Math.max(document.body.scrollHeight,document.body.clientHeight);

    65.             //如果将水印列数设置为0,或水印列数设置过大,超过页面最大宽度,则重新计算水印列数和水印x轴间隔
    66.             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)) {
    67.                 defaultSettings.watermark_cols = parseInt((page_width-defaultSettings.watermark_x+defaultSettings.watermark_x_space) / (defaultSettings.watermark_width + defaultSettings.watermark_x_space));
    68.                 defaultSettings.watermark_x_space = parseInt((page_width - defaultSettings.watermark_x - defaultSettings.watermark_width * defaultSettings.watermark_cols) / (defaultSettings.watermark_cols - 1));
    69.             }
    70.             //如果将水印行数设置为0,或水印行数设置过大,超过页面最大长度,则重新计算水印行数和水印y轴间隔
    71.             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)) {
    72.                 defaultSettings.watermark_rows = parseInt((defaultSettings.watermark_y_space + page_height - defaultSettings.watermark_y) / (defaultSettings.watermark_height + defaultSettings.watermark_y_space));
    73.                 defaultSettings.watermark_y_space = parseInt(((page_height - defaultSettings.watermark_y) - defaultSettings.watermark_height * defaultSettings.watermark_rows) / (defaultSettings.watermark_rows - 1));
    74.             }
    75.             var x;
    76.             var y;
    77.             for (var i = 0; i < defaultSettings.watermark_rows; i++) {
    78.                 y = defaultSettings.watermark_y + (defaultSettings.watermark_y_space + defaultSettings.watermark_height) * i;
    79.                 for (var j = 0; j < defaultSettings.watermark_cols; j++) {
    80.                     x = defaultSettings.watermark_x + (defaultSettings.watermark_width + defaultSettings.watermark_x_space) * j;

    81.                     var mask_div = document.createElement('div');
    82.                     mask_div.id = 'mask_div' + i + j;
    83.                     mask_div.appendChild(document.createTextNode(defaultSettings.watermark_txt));
    84.                     //设置水印div倾斜显示
    85.                     mask_div.style.webkitTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
    86.                     mask_div.style.MozTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
    87.                     mask_div.style.msTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
    88.                     mask_div.style.OTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
    89.                     mask_div.style.transform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
    90.                     mask_div.style.visibility = "";
    91.                     mask_div.style.position = "absolute";
    92.                     //选不中
    93.                     mask_div.style.left = x + 'px';
    94.                     mask_div.style.top = y + 'px';
    95.                     mask_div.style.overflow = "hidden";
    96.                     mask_div.style.zIndex = "9999";
    97.                     mask_div.style.pointerEvents = "none";
    98.                     //mask_div.style.border="solid #eee 1px";
    99.                     mask_div.style.opacity = defaultSettings.watermark_alpha;
    100.                     mask_div.style.fontSize = defaultSettings.watermark_fontsize;
    101.                     mask_div.style.color = defaultSettings.watermark_color;
    102.                     mask_div.style.textAlign = "center";
    103.                     mask_div.style.width = defaultSettings.watermark_width + 'px';
    104.                     mask_div.style.height = defaultSettings.watermark_height + 'px';
    105.                     mask_div.style.display = "block";
    106.                     oTemp.appendChild(mask_div);
    107.                 };
    108.             };

    109.             // document.body.appendChild(oTemp);
    110.             try {
    111.                 // console.log(document.getElementById(id), "document.getElementById(id)");
    112.                 document.getElementById(id).appendChild(oTemp);
    113.             } catch(error) {
    114.                 console.error(error, "遮罩异常");
    115.             }
    116.         };

    117.         watermarkUtils({ watermark_txt: "9527", watermark_width: 60, watermark_fontsize: "14px" }, watermarkId);
    118.     </script>
    119. </body>
    120. </html>
    复制代码
    核心代码
    1. const watermarkId = "watermarkId";

    2. // 水印遮罩函数
    3. function watermarkUtils(settings, id) {
    4.     //默认设置
    5.     var defaultSettings={
    6.         watermark_txt: "text",
    7.         watermark_x: 10,//水印起始位置x轴坐标
    8.         watermark_y: 20,//水印起始位置Y轴坐标
    9.         watermark_rows: 55,//水印行数
    10.         watermark_cols: 55,//水印列数
    11.         watermark_x_space: 10,//水印x轴间隔
    12.         watermark_y_space: 10,//水印y轴间隔
    13.         watermark_color: '#000000',//水印字体颜色
    14.         watermark_alpha: 0.2,//水印透明度
    15.         watermark_fontsize: '15px',//水印字体大小
    16.         watermark_font: '微软雅黑',//水印字体
    17.         watermark_width: 50,//水印宽度
    18.         watermark_height: 20,//水印长度
    19.         watermark_angle: 25//水印倾斜度数
    20.     };

    21.     //采用配置项替换默认值,作用类似jquery.extend
    22.     if(typeof settings === "object") {
    23.         var src = settings;
    24.         for(let key in src) {
    25.             if(src[key] && defaultSettings[key] && src[key] === defaultSettings[key])
    26.             continue;
    27.             else if(src[key])
    28.             defaultSettings[key]=src[key];
    29.         }
    30.     }

    31.     var oTemp = document.createDocumentFragment();
    32.     // var oTemp = document.createElement("div");

    33.     //获取页面最大宽度
    34.     var page_width = Math.max(document.body.scrollWidth,document.body.clientWidth);
    35.     //获取页面最大长度
    36.     var page_height = Math.max(document.body.scrollHeight,document.body.clientHeight);

    37.     //如果将水印列数设置为0,或水印列数设置过大,超过页面最大宽度,则重新计算水印列数和水印x轴间隔
    38.     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)) {
    39.         defaultSettings.watermark_cols = parseInt((page_width-defaultSettings.watermark_x+defaultSettings.watermark_x_space) / (defaultSettings.watermark_width + defaultSettings.watermark_x_space));
    40.         defaultSettings.watermark_x_space = parseInt((page_width - defaultSettings.watermark_x - defaultSettings.watermark_width * defaultSettings.watermark_cols) / (defaultSettings.watermark_cols - 1));
    41.     }
    42.     //如果将水印行数设置为0,或水印行数设置过大,超过页面最大长度,则重新计算水印行数和水印y轴间隔
    43.     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)) {
    44.         defaultSettings.watermark_rows = parseInt((defaultSettings.watermark_y_space + page_height - defaultSettings.watermark_y) / (defaultSettings.watermark_height + defaultSettings.watermark_y_space));
    45.         defaultSettings.watermark_y_space = parseInt(((page_height - defaultSettings.watermark_y) - defaultSettings.watermark_height * defaultSettings.watermark_rows) / (defaultSettings.watermark_rows - 1));
    46.     }
    47.     var x;
    48.     var y;
    49.     for (var i = 0; i < defaultSettings.watermark_rows; i++) {
    50.         y = defaultSettings.watermark_y + (defaultSettings.watermark_y_space + defaultSettings.watermark_height) * i;
    51.         for (var j = 0; j < defaultSettings.watermark_cols; j++) {
    52.             x = defaultSettings.watermark_x + (defaultSettings.watermark_width + defaultSettings.watermark_x_space) * j;

    53.             var mask_div = document.createElement('div');
    54.             mask_div.id = 'mask_div' + i + j;
    55.             mask_div.appendChild(document.createTextNode(defaultSettings.watermark_txt));
    56.             //设置水印div倾斜显示
    57.             mask_div.style.webkitTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
    58.             mask_div.style.MozTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
    59.             mask_div.style.msTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
    60.             mask_div.style.OTransform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
    61.             mask_div.style.transform = "rotate(-" + defaultSettings.watermark_angle + "deg)";
    62.             mask_div.style.visibility = "";
    63.             mask_div.style.position = "absolute";
    64.             //选不中
    65.             mask_div.style.left = x + 'px';
    66.             mask_div.style.top = y + 'px';
    67.             mask_div.style.overflow = "hidden";
    68.             mask_div.style.zIndex = "9999";
    69.             mask_div.style.pointerEvents = "none";
    70.             //mask_div.style.border="solid #eee 1px";
    71.             mask_div.style.opacity = defaultSettings.watermark_alpha;
    72.             mask_div.style.fontSize = defaultSettings.watermark_fontsize;
    73.             mask_div.style.color = defaultSettings.watermark_color;
    74.             mask_div.style.textAlign = "center";
    75.             mask_div.style.width = defaultSettings.watermark_width + 'px';
    76.             mask_div.style.height = defaultSettings.watermark_height + 'px';
    77.             mask_div.style.display = "block";
    78.             oTemp.appendChild(mask_div);
    79.         };
    80.     };

    81.     // document.body.appendChild(oTemp);
    82.     try {
    83.         // console.log(document.getElementById(id), "document.getElementById(id)");
    84.         document.getElementById(id).appendChild(oTemp);
    85.     } catch(error) {
    86.         console.error(error, "遮罩异常");
    87.     }
    88. };

    89. // 使用
    90. watermarkUtils({ watermark_txt: "9527", watermark_width: 60, watermark_fontsize: "14px" }, watermarkId);
    复制代码
    到此这篇关于给原生html中添加水印遮罩层的实现示例的文章就介绍到这了,更多相关html添加水印遮罩层内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

    来源:https://www.jb51.net/html5/769995.html
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表