watermark-cont.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. const watermark = {}
  2. const setWatermark = (str = null, str1 = null) => { // 传入多个str 或者传入一个对象
  3. const id = '1.23452384164.123412415'
  4. if (document.getElementById(id) !== null) {
  5. document.body.removeChild(document.getElementById(id))
  6. }
  7. const can = document.createElement('canvas')
  8. can.width = 420
  9. can.height = 300
  10. const cans = can.getContext('2d')
  11. cans.rotate(-20 * Math.PI / 180)
  12. cans.font = '22px Vedana'
  13. cans.fillStyle = '#E7ECF0'
  14. cans.textAlign = 'left'
  15. cans.textBaseline = 'Middle'
  16. cans.fillText(str, can.width / 20, can.height / 1.5)
  17. cans.fillText(str1, can.width / 20, can.height / 1.3) // 这里渲染多行就可以展示多行,具体效果看上图,这里要调整高度的比例就可以做到换行的效果
  18. const div = document.createElement('div')
  19. div.id = id
  20. div.style.pointerEvents = 'none'
  21. div.style.top = '80px'
  22. div.style.left = '150px'
  23. div.style.position = 'fixed'
  24. div.style.zIndex = '-100000' // 这里设置层级 设为负值可以在页面下层
  25. div.style.width = document.documentElement.clientWidth - 100 + 'px'
  26. div.style.height = document.documentElement.clientHeight - 100 + 'px'
  27. div.style.background = 'url(' + can.toDataURL('image/png') + ') left top repeat'
  28. document.body.appendChild(div)
  29. return id
  30. }
  31. // 该方法只允许调用一次
  32. watermark.set = (str, str1) => { // 这里要把传入的参数传进来
  33. let id = setWatermark(str, str1)
  34. setInterval(() => {
  35. if (document.getElementById(id) === null) {
  36. id = setWatermark(str, str1)
  37. }
  38. }, 500)
  39. window.onresize = () => {
  40. setWatermark(str, str1)
  41. }
  42. }
  43. export default watermark