8***@qq.com
8***@qq.com
  • 发布:2019-06-03 13:08
  • 更新:2024-07-01 14:58
  • 阅读:9568

uni-app全局水印:根据图片路径生成,兼容多端

分类:uni-app

使用方法:
1、在App.vue中引入并设置水印
2、本例子使用的水印图片是250*250px的,可以根据需要自己调整样式
3、watermark.js内容见下方

<script>  
    import watermark from '@/commons/framework/watermark.js'  
    export default {  
        onLaunch: function() {  
            watermark.set('/static/framework/imgs/watermark.png');  
        },  
        onShow: function() {  
            console.log('App Show');  
        },  
        onHide: function() {  
            console.log('App Hide')  
        }  
    }  
</script>

watermark.js

'use strict';  

let watermark = {};  

watermark.set = (path) => {  
    let id = '1.23452384164.123412415';  

    // #ifdef H5  
    if (document.getElementById(id) !== null) {  
        document.body.removeChild(document.getElementById(id));  
    }  

    let div = document.createElement('div');  
    div.id = id;  
    div.style.pointerEvents = 'none';  
    div.style.top = '44px';  
    div.style.left = '-40px';  
    div.style.bottom = '50px';  
    div.style.right = '0px';  
    div.style.position = 'fixed';  
    div.style.zIndex = '100000';  
    div.style.zoom = '0.6'; //设置缩放  
    div.style.opacity = '0.5'; //设置透明度  
    div.style.background = 'url(' + path + ') left top repeat';  
    document.body.appendChild(div);  
    return id;  
    // #endif  

    // #ifdef APP-PLUS  
    if (plus.nativeObj.View.getViewById(id) !== null) {  
        plus.nativeObj.View.getViewById(id).close();  
    }  
    uni.getSystemInfo({  
        success: function (res) {  
            //水印排列行数  
            let row = Math.floor(res.windowHeight / uni.upx2px(250));  
            let tarArr = [];  

            for(let i = 0; i < row; i++) {  
                for(let j = 0; j < 3; j++){  
                    tarArr.push({  
                        tag: 'img',  
                        src: path,  
                        position: {  
                            top: (uni.upx2px(255) * i) + 'px',  
                            left: (uni.upx2px(255) * j) + 'px',  
                            width: uni.upx2px(255) + 'px',  
                            height: uni.upx2px(255) + 'px'  
                        }  
                    });  
                }  
            }  

            var watermarkView = new plus.nativeObj.View(id, {  
                top:'70px',  
                left:'0px',  
                right: '0px',  
                bottom: '50px'  
            }, tarArr);  
            //拦截View控件的触屏事件,将事件穿透给下一层view  
            watermarkView.interceptTouchEvent(false);   
            watermarkView.show();  
        }  
    });  
    // #endif  
}  

export default watermark;

如果有问题或者建议欢迎评论留言哦

5 关注 分享
3***@qq.com 2***@qq.com aliang888 BoredApe 套马杆的套子

要回复文章请先登录注册

3***@qq.com

3***@qq.com

看代码是不是不支持微信小程序
2024-07-01 14:58
t***@definesys.com

t***@definesys.com

不用插槽实现可轻松被移除
2023-09-04 15:17
2***@qq.com

2***@qq.com

回复 1***@163.com :
你好 请问你解决了么
2022-08-04 17:16
1***@163.com

1***@163.com

您好,作者,这个水印使用图片没问题,单用字体font的话是没办法有图片事先做好的 内容具有旋转角度 的效果的。而内容是需要动态生成,无法直接作图
2022-07-11 10:38
田心水原

田心水原

回复 田心水原 :
如果不能设置水印文本基本没有用了
2020-07-17 15:46
田心水原

田心水原

好像不能设置水印显示的文本吧
2020-07-17 15:43
Gdc

Gdc

回复 UchihaSasuke :
试用版
2020-06-02 10:47
喵小白

喵小白

回复 UchihaSasuke :
可能是为了防止员工把敏感信息截屏分享出去吧,有了这个一个是警告,一个是可以追查
2020-03-06 15:37
1***@qq.com

1***@qq.com

赞一个
2019-11-05 11:58
z***@qq.com

z***@qq.com

回复 UchihaSasuke :
有点是需要的,比如企业微信、钉钉之类-..-
2019-11-05 11:32