当前位置: 首页 > news >正文

实习随笔【前端技术实现全局添加水印】

        有一些数据比较重要的项目,往往需要对数据进行保护措施,本文介绍常见策略——全局添加水印。

1、创建水印组件
<template><div class="water-mark"><div class="water-mark-content"><span class="phone">{{ phone }}</span><span class="time">{{ time }}</span></div></div>
</template>
<script>
export default {name: 'WaterMark',props: {phone: {type: String,required: true,},time: {type: Number,required: true,},},
};
</script>
<style scoped>.water-mark {position: relative;width: 300px;height: 300px;background: url('../../assets/logo.png') no-repeat center;background-size: 80px;filter: brightness(0.7);pointer-events: none;color: rgba(26, 26, 26, 0.3);font-size: 10px;transform: rotate(-45deg);display: inline-block;opacity: 0.5;}.water-mark-content {position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%);text-align: center;}.phone {display: block;position: absolute;top: -15px;left: 50px;}.time {display: block;position: absolute;top: 0px;left: 50px;}
</style>
2、在公共组件使用水印组件 

        这里需要注意,水印的位置以及多少可由样式具体决定

<div class="water-wrap"><WaterMarkv-for="(item, index) in waterArr":key="`water-mark-${index}`":phone="userInfo.username":time="time.getTime()"/>
</div>// 水印内容——当前时间
time = new Date()// 水印数组控制水印数量
waterArr = Array(100).fill(1)// 水印样式控制水印显示区域
.water-wrap {position: fixed;bottom: 0;left: 0;top: 0;right: 0;overflow: hidden;z-index: 100000;pointer-events: none;}
3、对于不需要水印的页面(登录页)

        可以用计算属性来判断,并用v-if(vue)或&&(react)控制显隐

// 以下例子以登录页不显示水印为例
<div v-if="isLoginPage" class="water-wrap"><WaterMarkv-for="(item, index) in waterArr":key="`water-mark-${index}`":phone="userInfo.username":time="time.getTime()"/>
</div>computed: {isLoginPage() {// 检查当前路由路径是否包含 '/login'return !this.$route.path.includes('/login');},
},

http://www.lryc.cn/news/400842.html

相关文章:

  • 【软件测试】编写测试用例篇
  • 转型AI产品经理需要掌握的硬知识(二):AI常见概念和算法梳理
  • mysql-connector-java 8.0.33 反序列化漏洞
  • 基于Faster R-CNN的安全帽目标检测
  • linux中vim切换输入中文
  • 嵌入式C++、Qt/QML和MQTT:智能工厂设备监控系统的全流程介绍(附代码示例)
  • 监控易V7.6.6.15升级详解8:机房动环管理功能
  • C++ | Leetcode C++题解之第232题用栈实现队列
  • Git-Updates were rejected 解决
  • Java常用的API_02(正则表达式、爬虫)
  • 2024最新图纸加密软件Top5排行榜
  • 每日一练 - IEEE 802.1Q中STP协议
  • 设计模式--工厂设计模式
  • 消息队列-MQ
  • 近源渗透简介
  • 13 IP层协议-网际控制报文协议ICMP
  • 第一节Linux常见指令
  • 嵌入式全栈设计思路:STM32G4+ChibiOS+FreeRTOS+PID控制+PFC算法构建高效智能电源管理系统(附代码示例)
  • Linux驱动开发-04LED灯驱动实验(直接操作寄存器)
  • Linux命令更新-sort 和 uniq 命令
  • 【密码学】密码学数学基础:剩余系
  • 量化发展历史简述,QMT/PTrade+恒生UFT、LDP极速柜台适用哪些情形?
  • linux服务器anaconda安装及环境变量配置
  • 如何在 Objective-C 中实现多态性,并且它与其他面向对象编程语言的多态性实现有何差异?
  • 阿里云OSS简单应用
  • cleanshot Mac 上的截图工具
  • JMeter进行HTTP接口测试的技术要点
  • 基于智能算法的品牌视觉识别系统优化研究
  • 递归锁与普通锁的区别
  • FPGA上板项目(二)——PLL测试