1. 程式人生 > 程式設計 >vue輕鬆實現水印效果

vue輕鬆實現水印效果

前言:

專案中使用水印效果,可指定容器

效果圖:

1、不指定容器

vue輕鬆實現水印效果

2、指定容器

vue輕鬆實現水印效果

實現方法:

1、新建一個配置檔案 watermark. ,可放util,也可放別的地方

let watermark = {}
 
let setWatermark = (text,sourceBody) => {
  let id = Math.random()*10000+'-'+Math.random()*10000+'/'+Math.random()*10000
 
  if (document.getElementById(id) !== null) {
    document.body.removeChild(document.getElementById(id))
  }
 
  let can = document.createElement('canvas')
  can.width = 150
  can.height = 120
 
  let cans = can.getContext('2d')
  cans.rotate(-20 * Math.PI / 180)
  cans.font = '15px Vedana'
  cans.fillStyle = 'rgba(0,.5)'
  cans.textAlign = 'left'
  cans.textBaseline = 'Middle'
  cans.fillText(text,can.width / 20,can.height )
 
  let water_div = document.crezjlPtsED
ateElement('div') water_div.id = id water_div.style.pointerEvents = 'none' water_div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat' if(sourceBody){ water_div.style.width = '100%' water_div.style.height = '100%' sourceBody.appendChild(water_div) }else{ water_div.style.top = '3px' water_div.style.left = '0px' water_div.style.position = 'fixed' water_div.style.zIndex = '100000' water_div.style.width = document.documentElement.clientWidth + 'px' water_div.style.height = document.documentElement.clientHeight + 'px' document.body.appendChild(water_div) } return id } /** * 該方法只允許呼叫一次 * @param: * @text == 水印內容 * @sourceBody == 水印新增在哪裡,不傳就是body * */ watermark.set = (text,sourceBody) => { let id = setWatermark(text,sourceBody) setInterval(() => { if (document.getElementById(id) === null) { id = setWatermark(text,sourceBody) } },2000) window.onresize = () => { setWatermark(text,sourceBody) } } export default watermark

2、在main.js中全域性配置

// 水印
import watermark from './utils/watermark.js'
Vue.prototype.$watermark = watermark

3、頁面中使用-全屏水印

this.$watermark.set("浩星2731")

4、頁面中使用-指定容器

<el-button @click="addWatermark">點我新增水印</el-button>www.cppcns.com
<div ref="content" style="width: 500px;height: 500px;border: 1px solid #ccc;">
 addWatermark(){
      this.$watermark.www.cppcns.com
set("浩星2731",this.$refs.content) }

5、如果覺得字型之間的距離太大了,改這個屬性就行了

can.widthhttp://www.cppcns.com = 150
can.height = 120

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。