前端vue实现页面加水印文字 单个页面所有页面加水印

随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随意的进行组合。大大提升开发效率低,降低维护成本。

组件化对于任何一个业务场景复杂的前端应用以及经过多次迭代之后的产品来说都是必经之路。组件化要做的不仅仅是表面上看到的模块拆分解耦,其背后还有很多工作来支撑组件化的进行,例如结合业务特性的模块拆分策略、模块间的交互方式和构建系统等等 。

本文给大家介绍的一款组件是:

前端vue实现页面加水印文字, 可以实现系统所有页面加水印,也可以单个页面加水印, 可更改水印颜色, 

阅读全文下载完整组件代码请关注微信公众号: 前端组件开发

d848d5658a07453c843277846948c608.png

效果图如下:

 

58452a3cc34d858a472ec69e188f9961.png

 

#### 使用方法

```使用方法

/* 给系统所有页面加水印*/

// 第一个参数:水印文字  第二个参数: 加水印的底图,默认body 给所有页面加水印, 第三个参数:水印颜色

Watermark.set("cc-innovation.gd", '', 'blue');

/* 给当前页面加水印*/

// 第一个参数:水印文字  第二个参数: 加水印的底图,默认body 给所有页面加水印, 第三个参数:水印颜色

Watermark.set("cc-innovation.gd", this.$refs.content, 'red');

```

#### HTML代码部分

```html

<template>

<div class="content" ref="content">

<view class="text-area">

<text class="title">{{title}}</text>

<button @click="goDetail" style="margin-top: 20px;"> {{' 跳转 '}} </button>

</view>

</div>

</template>

```

#### JS代码 (引入组件 填充数据)

```javascript

<script>

import Watermark from "./waterMark";

export default {

data() {

return {

title: 'Hello'

}

},

mounted() {

/* 给系统所有页面加水印*/

// 第一个参数:水印文字  第二个参数: 加水印的底图,默认body 给所有页面加水印, 第三个参数:水印颜色

Watermark.set("cc-innovation.gd", '', 'blue');

/* 给当前页面加水印*/

// 第一个参数:水印文字  第二个参数: 加水印的底图,默认body 给所有页面加水印, 第三个参数:水印颜色

// Watermark.set("cc-innovation.gd", this.$refs.content, 'red');

},

methods: {

goDetail() {

uni.navigateTo({

url: './Detail'

})

}

}

}

</script>

```

#### CSS

```css

<style>

.content {

display: flex;

flex-direction: column;

align-items: center;

justify-content: center;

}

.text-area {

display: flex;

justify-content: center;

flex-direction: column;

margin-top: 30px;

}

.title {

font-size: 36rpx;

color: #8f8f94;

text-align: center;

}

</style>

```

 

 

 

 

### 前端实现图片水印的方法 在前端开发中,可以通过多种技术手段来实现在图片上添水印的功能。以下是几种常见的方法及其具体实现: #### 方法一:基于 Canvas 的图像处理 Canvas 是一种强大的 HTML 元素,能够用于绘制图形、操作图像以及应用复杂的视觉效果。通过 Canvas 可以轻松地将文字或其他图案叠到目标图片之上。 ```javascript function addWatermarkToImage(imageSrc, text) { const canvas = document.createElement('canvas'); const ctx = canvas.getContext('2d'); const image = new Image(); image.src = imageSrc; image.onload = () => { canvas.width = image.width; canvas.height = image.height; // 绘制原始图片 ctx.drawImage(image, 0, 0); // 设置字体样式并绘制水印文本 ctx.font = '30px Arial'; ctx.fillStyle = 'rgba(255, 0, 0, 0.5)'; ctx.rotate(-Math.PI / 6); // 斜向角度 ctx.fillText(text, canvas.width * 0.1, canvas.height * 0.8); // 将最终结果导出为新的图片 URL const resultImageUrl = canvas.toDataURL('image/png'); console.log(resultImageUrl); }; } addWatermarkToImage('example.jpg', '版权所有'); // 调用函数 ``` 这种方法的优点在于灵活性高,支持自定义水印的位置、透明度和旋转角度[^1]。 --- #### 方法二:使用 SVG 进行矢量绘图 SVG 提供了一种轻量级的方式来嵌入复杂形状或文字作为水印,并且它天生具有缩放不变形的特点。 ```html <svg xmlns="http://www.w3.org/2000/svg" width="400" height="300"> <!-- 插入基础图片 --> <image href="background.png" x="0" y="0" width="400" height="300"/> <!-- 添水印层 --> <text x="50%" y="70%" font-size="24pt" fill="#FF0000" opacity="0.5" transform="rotate(-45 200 150)"> 版权所有 © </text> </svg> ``` 此方案适合于需要高性能渲染的应用场景,尤其是当页面中有大量静态内容时[^3]。 --- #### 方法三:借助第三方库 Watermark.js 对于更高级的需求,可以直接引入成熟的 JavaScript 库 `watermark.js` 来简化流程。该库提供了丰富的配置选项以便快速生成带水印的效果。 ```javascript window.onload = function() { watermark.init({ watermark_x: 0, watermark_y: 23, watermark_txt: "版权保护", watermark_alpha: 0.315, watermark_width: 280, watermark_height: 20, watermark_y_space: 10, watermark_x_space: 10, watermark_fontsize: "15px", watermark_angle: -20, watermark_color: "#ff0000" }); }; ``` 上述脚本会自动遍历 DOM 中符合条件的所有节点,并为其附指定样式的水印标记[^2]。 --- ### 总结 以上介绍了三种主流的前端图片水印的技术路径——分别是利用原生 API (`Canvas`) 手动构建;采用声明式语法 (SVG) 定义结构化数据模型;或者依赖外部插件封装好的解决方案 (`watermark.js`) 。每种都有各自的适用范围及优缺点,在实际项目选型过程中需综合考虑业务需求和技术栈现状做出最佳决策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

前端组件开发

你的钟意将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值