江南才子 发表于 2021-7-14 09:11:10

vue水印-第二种方法:通过指令

1、utils文件夹下新建 directives.js:

import Vue from 'vue'

Vue.directive('watermark', (el, binding) => {
function addWaterMarker(str, parentNode, font, textColor) {
    // 水印文字,父元素,字体,文字颜色
    var can = document.createElement('canvas')
    parentNode.appendChild(can)
    can.width = 400
    can.height = 200
    can.style.display = 'none'
    var cans = can.getContext('2d')
    cans.rotate((-20 * Math.PI) / 180)
    cans.font = font || '16px Microsoft JhengHei'
    cans.fillStyle = textColor || 'rgba(180, 180, 180, 0.3)'
    cans.textAlign = 'left'
    cans.textBaseline = 'Middle'
    cans.fillText(str, can.width / 3, can.height / 2)
    parentNode.style.backgroundImage = 'url(' + can.toDataURL('image/png') + ')'
}
addWaterMarker(
    binding.value.text,
    el,
    binding.value.font,
    binding.value.textColor
)
})View Code
2、main.js中引入
import'@utils/directives'3、在需要使用水印的标签上加上指令
<div class="box" v-watermark="{text:'hello~',textColor:'red'}">
    123
</div>效果图:



文档来源:51CTO技术博客https://blog.51cto.com/u_15301829/3068390
页: [1]
查看完整版本: vue水印-第二种方法:通过指令