react,vue 页面添加水印

该文章介绍了一个在基于UMI构建的React移动端项目中添加全局水印的方法。通过在layouts下创建waterMark.js组件,然后在页面引入并执行waterMark方法,动态生成包含公司或用户名的水印,并支持自定义配置如文本内容、字体大小、透明度等。此外,还提到了vue的使用方法以及可选择的第三方组件。
摘要由CSDN通过智能技术生成

案例项目为react 移动端,基于umi 搭建的框架

思路谁有页面统一加水印,这是就需要我们再跟目录下加上,umi 自带layout,所以相对简单一点。封好组件方法引入尽可以

在layouts 下添加waterMark.js

/**
*** config 配置 全部非必填 ***
{
    content: 'ChiefClouds XHM', // 文本内容
    fontSize: '16px', // 字体大小
    opacity: 0.5, // 透明度
    rotate: '-10', // 偏转角度
    color: '#ADADAD', // 字体颜色
    modalId: 'J_waterMarkModalByXHMAndDHL' // 浮层DomId
}
*** 使用方式 ***
页面引入 waterMark.js 文件
执行 waterMark(特定配置参数) 方法
每次调用会生成新的 DOM 实例, 支持传入新配置, 动态创建新实例
*/

export const waterMark =  (config) =>{
  var defaultConfig = {
    content: sessionStorage.getItem('gid'), // 通常为公司名字或个人用户名
    fontSize: '16px',
    opacity: 0.5,
    rotate: '-10',
    color: '#ADADAD',
    modalId: 'J_waterMarkModalByXHMAndDHL',
  }

  config = Object.assign({}, defaultConfig, config)

  var existMarkModalDom = document.getElementById(config.modalId)
  if (existMarkModalDom) {
    // return;
    document.body.removeChild(existMarkModalDom)
  }

  var markModalDom = document.createElement('div')
  markModalDom.setAttribute('id', config.modalId)
  markModalDom.style['position'] = 'fixed'
  markModalDom.style['top'] = 0
  markModalDom.style['left'] = 0
  markModalDom.style['bottom'] = 0
  markModalDom.style['right'] = 0
  markModalDom.style['background-color'] = 'transparent'
  markModalDom.style['pointer-events'] = 'none'
  markModalDom.style['z-index'] = 9999
  markModalDom.style['overflow'] = 'hidden'

  var markContentDom = document.createElement('span')

  markContentDom.style['position'] = 'relative'
  markContentDom.style['display'] = 'inline-block'
  markContentDom.style['max-width'] = '33%'
  markContentDom.style['min-width'] = '400px'
  markContentDom.style['padding'] = '80px 0'
  markContentDom.style['height'] = '100px'
  markContentDom.style['text-align'] = 'center'

  markContentDom.style['opacity'] = config.opacity
  markContentDom.style['pointer-events'] = 'none'

  var markContentTxtDom = document.createElement('span')
  markContentTxtDom.innerHTML = config.content
  markContentTxtDom.style['position'] = 'absolute'
  markContentTxtDom.style['display'] = 'inline-block'
  markContentTxtDom.style['pointer-events'] = 'none'
  markContentTxtDom.style['top'] = '50%'
  markContentTxtDom.style['left'] = '50%'
  markContentTxtDom.style['transform'] =
    'translate(-50%, -50%) rotate(' + config.rotate + 'deg)'
  markContentTxtDom.style['font-size'] = config.fontSize
  markContentTxtDom.style['color'] = config.color

  markContentDom.appendChild(markContentTxtDom)

  // return

  var contentHtml = markContentDom.outerHTML
  var allContentHtml = ''
  for (var i = 0; i < 100; i++) {
    allContentHtml += contentHtml
  }

  markModalDom.innerHTML = allContentHtml

  document.body.appendChild(markModalDom)
}

使用

import { waterMark } from './waterMark';

export default function Layout(props: IRouteComponentProps) {

  useEffect(() => {
    // 调用
    waterMark();
  }, []); //改生命周期如vue 的mounted
  return (    
   .
   .
   .
    此处省略一千行....
  );
}

vue 可在main.js 使用 

不想自己分装也可使用watermark-dom、watermark-component-for-react组件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Jim-zf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值