vue 水印插件 插件:directives.js

import Vue from 'vue'
/**
 * author: zuokun
 * 水印
 * text:水印文字
 * font:字体
 * textColor:文字颜色
 * width:宽度
 * height:高度
 * textRotate:偏转度 -90到0, 负数值,不包含-90
 */
Vue.directive('watermark',(el,binding)=>{
    let text = binding.value.text;
    let font = binding.value.font || "16px Microsoft JhengHei";
    let textColor = binding.value.textColor || "rgba(215, 215, 215, 0.2)";
    let width = binding.value.width || 400;
    let height = binding.value.height || 200;
    let textRotate = binding.value.textRotate||-20;
    
    function addWaterMarker(parentNode){
        var can = document.createElement('canvas');
        parentNode.appendChild(can);
        can.width = width;
        can.height = height;
        can.style.display = 'none';
        var cans = can.getContext('2d');
        cans.rotate(textRotate * Math.PI / 180);
        cans.font = font;
        cans.fillStyle = textColor ;
        cans.textAlign = 'left';
        cans.textBaseline = 'Middle';
        cans.fillText(text, 0,  can.height);
        parentNode.style.backgroundImage = "url(" + can.toDataURL("image/png") + ")";
    }
    addWaterMarker(el)
})

使用:

1.引入:

import  '@/utils/directives.js';
2.设置配置:

复制代码

watermarkConfig:{//水印
text:'测试水印',
font:'20px 微软雅黑',
textColor:'#bcbcbc',
width : 150, //水印文字的水平间距
height : 100, //水印文字的高度间距(低于文字高度会被替代)
extRotate : -30 //-90到0, 负数值,不包含-90
},

复制代码
3.页面使用:

<div  v-watermark="watermarkConfig">
</div>

----------------------------------------------------------------------
页面完整代码:

复制代码
<template>
    <div id="test">
        <div class="bodydiv" v-watermark="watermarkConfig">
            
        </div>
    </div>
</template>

<script>
    import Vue from 'vue';
    import  '@/utils/directives.js';
    export default {
        data() {
            return {
                watermarkConfig:{//水印
                    text:'测试水印',
                    font:'20px 微软雅黑',
                    textColor:'#bcbcbc',
                    width : 150, //水印文字的水平间距
                    height : 100,  //水印文字的高度间距(低于文字高度会被替代)
                    extRotate : -30 //-90到0, 负数值,不包含-90
                },
            }
        },
        methods: {
            
        },
        created() { //初始化加载
        
        },
        mounted() { //加载完成回调
    
        },
    }
</script>

<style>
    #test .bodydiv {
        width: 100%;
        height:1000px;
    }
</style>

效果

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值