基于css的mix-blend-mode属性生成水印效果,不遮挡文本及点击事件

代码

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
    <style>
      .test {
        /* 设置全屏宽高,覆盖于页面上方 */
        position: fixed;
        top: 0;
        left: 0;
        height: 100vh;
        width: 100vw;
        opacity: 0.8;
        /* 生成的图片是有一张,开启repeat自动填充 */
        background: repeat;
        pointer-events: none;
        /* 核心部分,决定水印层与内容部分的结合方式 */
        mix-blend-mode: multiply;
      }
    </style>
  </head>
  <body>
    <div class="test"></div>
    <div>
      asdasd asd as dasd 
      asda sd asd
      <br />
      dasdasdasdasd
      brasdasdasdasd
      <br />
      dasdasdasdasdasdasd
      <a href="#">asdasdasdads</a>
    </div>
  </body>
  
  <script>
  	// 	水印显示文本
    const testName = '我是一条水印'
    // 通过canvas将文本生成图片
    const canvas = document.createElement('canvas')
    canvas.width = testName.length *16 * 2
    canvas.height = testName.length *16
    const ctx = canvas.getContext('2d')

    ctx.font = '16px PingFangSC'
    ctx.textAlign = 'center'
    ctx.fillStyle = '#EEEEEE'
    // 设置倾斜角度
    ctx.rotate(-30 * Math.PI / 180)
    // 调整偏移量,让文本完整显示
    ctx.translate(-50, 30)
    ctx.fillText(testName, 100, 58)
    // 将canvas转为base64图片
    const url = canvas.toDataURL()
    
    document.querySelector('div').style = `background-image: url(${url})`
  </script>
</html>

演示

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值