2020-10-12

水印功能实现

思路: 使用canvas制作一个水印图片 然后做为页面的背景色 上下 左右平铺

<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
    <div>
        <a href="https://www.baidu.com/">百度一下,你就知道!</a>
        <div class="c-circle">343343</div>
        <div class="c-triangle">3433</div>
        <div class="c-dialog">sdsds</div>
        <div class="c-diamond">dsds</div>
        <div class="c-parallelogram">dsds</div>
        <div class="c-star">dsd</div>
    </div>
</body>
    <script>
        (function () {
            // canvas  实现watermark
            function __canvasWM({
                // 使用ES6 的函数默认值方式设置参数的默认取值
                container = document.body,
                width = '200px',
                height = '150px',
                // 文本对齐方式
                textAlign = 'center',
                textBaseline = 'middle',
                // 文本大小格式
                font = '20px microsoft yehei',
                // 文本color
                fillStyle = 'rgba(184,184,184,0.8)',
                content = '水印',
                rotate = '30',
                zIndex = 1000
            } = {}) {
                var args = arguments[0]
                var canvas = document.createElement('canvas')

                canvas.setAttribute('width', width)
                canvas.setAttribute('height', height)
                var ctx = canvas.getContext('2d')
                
                ctx.textAlign = textAlign
                ctx.textBaseline = textBaseline;
                ctx.font = font
                ctx.fillStyle = fillStyle
                ctx.rotate(Math.PI / 180 * rotate)
                // parseFloat 可以解析一个字符串 并转换成浮点数
                // fillText 设置文本的位置
                ctx.fillText(content, parseFloat(width) / 2, parseFloat(height) / 2)

                // 将图片转换成base64格式
                var base64Url = canvas.toDataURL();
                const watermarkDiv = document.createElement('div')
                watermarkDiv.setAttribute('style', `
                    position:absolute;
                    top:0;
                    left:0;
                    height:100%;
                    width:100%;
                    z-index:${zIndex};
                    pointer-events:none;
                    background-repeat:repeat;
                    background-image:url(${base64Url})`);
                container.style.position = 'relative'
                // insertBefore() 方法在您指定的已有子节点之前插入新的子节点。
                container.insertBefore(watermarkDiv, container.firstChild)
            }
            window.__canvasWM = __canvasWM
        })();
        __canvasWM({
            content: '水印效果'
        })
    </script>

</html>
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值