vue 项目使用vue-watermark组件给页面添加满屏水印

  • vue-watermark

        专为 Vue 设计的水印组件,可添加文本或图片水印

npm install vue-watermark

注册为局部组件 

<template>
  <div id="app">
    <vue-watermark
      text="水印文字"
      :font-size="16"
      :line-height="24"
      :width="120"
      :height="80"
      :angle="-15"
      :opacity="0.2"
    />
  </div>
</template>

<script>
import VueWatermark from 'vue-watermark';

export default {
  name: 'App',
  components: {
    VueWatermark,
  },
}
</script>

注册为全局组件:

import VueWatermark from 'vue-watermark';
Vue.component('VueWatermark',VueWatermark)

要用的页面引用即可

    <vue-watermark
      text="水印文字"
      :font-size="16"
      :line-height="24"
      :width="120"
      :height="80"
      :angle="-15"
      :opacity="0.2"
    />

 

  • canvas 生成水印做背景图

创建一个水印组件 WatermarkIndex.vue

<template>
    <div class="watermark-container">
      <slot></slot>
      <div class="watermark" :style="watermarkStyle"></div>
    </div>
  </template>
  
  <script>
  export default {
    name: 'WatermarkIndex',
    props: {
      text: {
        type: String,
        default: 'Watermark'
      },
      fontSize: {
        type: Number,
        default: 16
      },
      color: {
        type: String,
        default: 'rgba(0, 0, 0, 0.1)'
      },
      angle: {
        type: Number,
        default: -20
      }
    },
    computed: {
      watermarkStyle() {
        return {
          backgroundImage: `url("${this.generateWatermarkImage()}")`,
          backgroundSize: `${this.fontSize * 5}px ${this.fontSize * 2}px`,
          backgroundRepeat: 'repeat',
          position: 'fixed',
          top: 0,
          left: 0,
          width: '100%',
          height: '100%',
          pointerEvents: 'none',
          zIndex: 9999
        }
      }
    },
    methods: {
      // 使用Canvas生成水印图像,并将其转换为Data URL,作为背景图像使用
      generateWatermarkImage() {
        const canvas = document.createElement('canvas')
        const ctx = canvas.getContext('2d')
  
        canvas.width = 200
        canvas.height = 100
  
        ctx.font = `${this.fontSize}px Arial`
        ctx.fillStyle = this.color
        ctx.textAlign = 'center'
        ctx.textBaseline = 'middle'
        ctx.translate(canvas.width / 2, canvas.height / 2)
        ctx.rotate((this.angle * Math.PI) / 180)
        ctx.fillText(this.text, 0, 0)
  
        return canvas.toDataURL()
      }
    }
  }
  </script>
  
  <style scoped>
  .watermark-container {
    position: relative;
    width: 100%;
    height: 100%;
  }
  </style>

在页面中引入 水印组件 

<template>
  <div>
    <Watermark text="Confidential" :fontSize="20" color="rgba(0, 0, 0, 0.2)" :angle="-30">
      <!-- 你的页面内容 -->
      <div>
        <h1>文本内容</h1>
      </div>
    </Watermark>
  </div>
</template>

<script>
import Watermark from '../components/WatermarkIndex.vue';

export default {
  components: {
    Watermark
  }
}
</script>

Vue2中添加页面水印功能通常需要结合HTML、CSS以及JavaScriptVue组件来实现。以下是一个简单的步骤描述: 1. 创建一个Vue组件:首先,你可以创建一个新的Vue组件,比如`Watermark.vue`,并将其内容设置为包含一个固定的文字或者图片作为水印。 ```html <template> <div class="watermark"> <span v-if="show watermarkText">{{ watermarkText }}</span> <img v-if="show watermarkImage" :src="watermarkImage" alt="Watermark"/> </div> </template> <script> export default { data() { return { show: true, watermarkText: '这是一个水印', watermarkImage: '/path/to/watermark.jpg', // 替换为你实际的图片路径 }; }, }; </script> <style scoped> .watermark { position: absolute; /* 设置水印定位 */ bottom: 0; right: 0; opacity: 0.5; /* 设置透明度 */ } </style> ``` 2. 使用组件:在Vue应用中,你需要在需要展示水印的地方引入这个组件,并通过props来动态控制是否显示水印水印的内容。 ```vue <template> <div id="app"> <!-- 其他内容 --> <watermark :show="shouldShowWatermark" :watermark-text="customWatermark"></watermark> <!-- 其他内容 --> </div> </template> <script> import Watermark from '@/components/Watermark.vue'; export default { components: { Watermark }, data() { return { customWatermark: '自定义水印', shouldShowWatermark: false, // 默认隐藏,可以根据需求调整 }; }, methods: { // 如果有特定场景需要显示或隐藏水印,可以在这里编写相关逻辑 toggleWatermark() { this.shouldShowWatermark = !this.shouldShowWatermark; } }, }; </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值