vue页面部分加水印

第一种

data() {
    return {
      watermark: "fffff", //水印字幕
    };
  },
 directives: {
    watermark: (el, binding) => {
      console.log(el)
      function addWaterMarker(str, parentNode, font, textColor) {
        // 水印文字,父元素,字体,文字颜色
        let can = document.createElement("canvas");
        parentNode.appendChild(can);
        can.width = 150;
        can.height = 100;
        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
      );
    }
  },

然后在template里面加入

 <div v-watermark="{ text: watermark, textColor: 'rgba(180, 180, 180, 0.3)' }">
 </div>

第二种

在utils里面创建utils/watermark.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 =150;
    can.height = 100;
    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
  );
});

然后在页面直接引入

//页面上面使用
<div v-watermark="{ text: watermark, textColor: 'rgba(180, 180, 180, 0.3)' }">
</div>


import "@/utils/watermark.js";
data() {
    return {
      watermark: "fffff", //水印字幕
    };
  },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值