当前位置: 代码网 > it编程>网页制作>html5 > 给原生html中添加水印遮罩层的实现示例

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

2021年04月01日 html5 我要评论
给原生html中添加水印遮罩层的实现示例这篇文章主要介绍了给原生html中添加水印遮罩层的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习... 21-04-01

效果图

代码

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="x-ua-compatible" content="ie=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>水印遮罩</title>
</head>
<style>
    .watermark_mask {
        position: fixed;
        top: 10px;
    }

    .hello {
        width: 500px;
        height: 2048px;
        margin: 0 auto;
        background-color: pink;
    }
</style>
<body>
    <div class="hello">
        hello world

        <div style="margin-top: 600px;">hello world 2</div>
        <div style="margin-top: 1200px;">hello world 3</div>
    </div>
    <div id="watermarkid" class="watermark_mask"></div>
    <script>
        const watermarkid = "watermarkid";

        // 水印遮罩函数
        function watermarkutils(settings, id) {
            //默认设置
            var defaultsettings={
                watermark_txt: "text",
                watermark_x: 10,//水印起始位置x轴坐标
                watermark_y: 20,//水印起始位置y轴坐标
                watermark_rows: 55,//水印行数
                watermark_cols: 55,//水印列数
                watermark_x_space: 10,//水印x轴间隔
                watermark_y_space: 10,//水印y轴间隔
                watermark_color: '#000000',//水印字体颜色
                watermark_alpha: 0.2,//水印透明度
                watermark_fontsize: '15px',//水印字体大小
                watermark_font: '微软雅黑',//水印字体
                watermark_width: 50,//水印宽度
                watermark_height: 20,//水印长度
                watermark_angle: 25//水印倾斜度数
            };

            //采用配置项替换默认值,作用类似jquery.extend
            if(typeof settings === "object") {
                var src = settings;
                for(let 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 otemp = document.createelement("div");

            //获取页面最大宽度
            var page_width = math.max(document.body.scrollwidth,document.body.clientwidth);
            //获取页面最大长度
            var page_height = math.max(document.body.scrollheight,document.body.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.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.border="solid #eee 1px";
                    mask_div.style.opacity = defaultsettings.watermark_alpha;
                    mask_div.style.fontsize = defaultsettings.watermark_fontsize;
                    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);
            try {
                // console.log(document.getelementbyid(id), "document.getelementbyid(id)");
                document.getelementbyid(id).appendchild(otemp);
            } catch(error) {
                console.error(error, "遮罩异常");
            }
        };

        watermarkutils({ watermark_txt: "9527", watermark_width: 60, watermark_fontsize: "14px" }, watermarkid);
    </script>
</body>
</html>

核心代码

const watermarkid = "watermarkid";

// 水印遮罩函数
function watermarkutils(settings, id) {
    //默认设置
    var defaultsettings={
        watermark_txt: "text",
        watermark_x: 10,//水印起始位置x轴坐标
        watermark_y: 20,//水印起始位置y轴坐标
        watermark_rows: 55,//水印行数
        watermark_cols: 55,//水印列数
        watermark_x_space: 10,//水印x轴间隔
        watermark_y_space: 10,//水印y轴间隔
        watermark_color: '#000000',//水印字体颜色
        watermark_alpha: 0.2,//水印透明度
        watermark_fontsize: '15px',//水印字体大小
        watermark_font: '微软雅黑',//水印字体
        watermark_width: 50,//水印宽度
        watermark_height: 20,//水印长度
        watermark_angle: 25//水印倾斜度数
    };

    //采用配置项替换默认值,作用类似jquery.extend
    if(typeof settings === "object") {
        var src = settings;
        for(let 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 otemp = document.createelement("div");

    //获取页面最大宽度
    var page_width = math.max(document.body.scrollwidth,document.body.clientwidth);
    //获取页面最大长度
    var page_height = math.max(document.body.scrollheight,document.body.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.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.border="solid #eee 1px";
            mask_div.style.opacity = defaultsettings.watermark_alpha;
            mask_div.style.fontsize = defaultsettings.watermark_fontsize;
            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);
    try {
        // console.log(document.getelementbyid(id), "document.getelementbyid(id)");
        document.getelementbyid(id).appendchild(otemp);
    } catch(error) {
        console.error(error, "遮罩异常");
    }
};

// 使用
watermarkutils({ watermark_txt: "9527", watermark_width: 60, watermark_fontsize: "14px" }, watermarkid);

到此这篇关于给原生html中添加水印遮罩层的实现示例的文章就介绍到这了,更多相关html添加水印遮罩层内容请搜索代码网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com