为了防止用户截屏后传播内容,需要给某些内容背景增加水印。本篇是介绍在Vue项目中增加水印,不添加第三方package,原声代码实现。
先上效果图:
干活实现方法
新增 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 = 250; can.height = 200; can.style.display = 'none'; var cans = can.getContext('2d'); cans.rotate(-20 * Math.PI / 180); cans.font = font || "13px Microsoft JhengHei"; cans.fillStyle = textColor || "rgba(180, 180, 180, 0.3)"; cans.textAlign = 'center'; cans.textBaseline = 'Middle'; cans.fillText(str, can.width / 3, can.height / 2); parentNode.style.background = "#fff url(" + can.toDataURL("image/png") + ")"; } addWaterMarker(binding.value.text, el, binding.value.font, binding.value.textColor) })
以上新增了watermark的directive,下面是如何在vue页面中使用:
<template> <div v-watermark="{text:watermark}"> </div> </template> <script> import '@/assets/directives.js' export default { data() { return { watermark: '水印内容水印内容' } }, created() { }, methods: { } } </script> <style lang="less" scoped> </style>
文章评论