当前位置: 首页 > news >正文

vue2和vue3页面加自定义水印(组件化)

vue2和vue3页面加自定义水印(组件化)

// -----------------------vue3 -------------------------
<!-- Watermark.vue --><template><div class="watermark" ref="watermark"></div>
</template><script setup lang="ts">import { onMounted, ref } from 'vue';const props = defineProps({text: {type: String,required: false,default: "我是水印"}});const watermark = ref(null);const addWatermark = (text) => {const watermarkDiv = watermark.value;const canvas = document.createElement('canvas');//在以下调整水印canvas.width = 200;canvas.height = 280;const ctx = canvas.getContext('2d');ctx.rotate(-45 * Math.PI / 180);ctx.font = '18px Arial';ctx.fillStyle = 'rgba(180, 180, 180, 0.3)';ctx.textAlign = 'center';ctx.textBaseline = 'middle';ctx.fillText(text, canvas.width / 2, canvas.height / 2);watermarkDiv.style.backgroundImage = `url(${canvas.toDataURL('image/png')})`;watermarkDiv.style.pointerEvents = 'none';watermarkDiv.style.position = 'fixed';watermarkDiv.style.top = 0;watermarkDiv.style.left = 0;watermarkDiv.style.width = '100%';watermarkDiv.style.height = '100%';watermarkDiv.style.zIndex = 9999;};onMounted(() => {addWatermark(props.text);});
</script><style scoped>.watermark {background-repeat: repeat;}// --------------其他页面引用组件,这个就不写了
// ----------------------------------vue2
<!-- Watermark.vue -->
<template><div class="watermark" ref="watermark"></div>
</template><script>
export default {props: {text: {type: String,required: false,default: "我是水印"}},mounted() {this.addWatermark(this.text);},methods: {addWatermark(text) {const watermarkDiv = this.$refs.watermark;const canvas = document.createElement('canvas');canvas.width = 200;canvas.height = 200;const ctx = canvas.getContext('2d');ctx.rotate(-20 * Math.PI / 180);ctx.font = '20px Arial';ctx.fillStyle = 'rgba(200, 200, 200, 0.50)';ctx.textAlign = 'center';ctx.textBaseline = 'middle';ctx.fillText(text, canvas.width / 2, canvas.height / 2);watermarkDiv.style.backgroundImage = `url(${canvas.toDataURL('image/png')})`;watermarkDiv.style.pointerEvents = 'none';watermarkDiv.style.position = 'fixed';watermarkDiv.style.top = 0;watermarkDiv.style.left = 0;watermarkDiv.style.width = '100%';watermarkDiv.style.height = '100%';watermarkDiv.style.zIndex = 9999;}}
};
</script><style scoped>
.watermark {background-repeat: repeat;
}
</style>// --------------其他页面引用组件,这个就不写了

http://www.mrgr.cn/news/34809.html

相关文章:

  • 828华为云征文 | 华为云Flexusx与OwnCloud的完美融合,打造高效云端办公环境
  • Centos安装helm
  • 玩手机数据集 8201张玩手机的照片,有对应的xml和txt文件,可以用于yolo训练
  • SaaS 软件转型计划
  • 【python】requests 库 源码解读、参数解读
  • 音视频入门基础:FLV专题(3)——FLV header简介
  • <<编码>> 第 17 章 自动操作(2)--自动加法器 示例电路
  • AI学习指南深度学习篇- Adadelta在深度学习中的应用
  • 两款强大的SSL证书自动化工具:Certimate vs Certd
  • java并发之并发理论
  • 输电线塔目标检测数据集yolo格式该数据集包括2644张输电线塔高清图像,该数据集已经过yolo格式标注,具有完整的txt标注文件和yaml配置文件。
  • GPT和Copilot联手,AI编程进入新纪元
  • 前端框架对比及选择:React、Vue、Angular的深度剖析
  • 银行业数据科学家的 6 条经验教训
  • 详解常见排序
  • hbase之布隆过滤器
  • 【自动驾驶】基于车辆几何模型的横向控制算法 | Pure Pursuit 纯跟踪算法详解与编程实现
  • RPA + 生成式AI
  • 搜索二叉树
  • 【GitLab】安装和使用