main
parent
93bc517856
commit
997230e8a6
@ -0,0 +1,17 @@ |
|||||||
|
## 1.1.5(2024-06-16) |
||||||
|
修改兼容性,去除show字段,控制显示用v-if操作 |
||||||
|
## 1.1.4(2024-06-15) |
||||||
|
column属性修复 |
||||||
|
## 1.1.3(2024-06-02) |
||||||
|
新特征: |
||||||
|
支持nvue |
||||||
|
改动: |
||||||
|
移除maxWidth属性(单条水印最大宽度) |
||||||
|
新增column属性可设置水印列数 |
||||||
|
新增fontSize属性可设置水印文字默认大小 |
||||||
|
修改margin属性为20(水印之间上下间距) |
||||||
|
nvue下支持覆盖video等元素 |
||||||
|
## 1.1.2(2022-01-12) |
||||||
|
调整为uni_modules目录规范 |
||||||
|
## 1.0(2021-03-31) |
||||||
|
发布1.0版本 |
@ -0,0 +1,152 @@ |
|||||||
|
<template> |
||||||
|
<view class="zmm-watermark"> |
||||||
|
<!-- 单个用于计算 --> |
||||||
|
<view class="zmm-watermark-mold" ref="mold" id="mold"> |
||||||
|
<rich-text :style="moldStyle" :nodes="watermark"></rich-text> |
||||||
|
</view> |
||||||
|
<!-- 循环 --> |
||||||
|
<view class="zmm-watermark-content" :style="{opacity:opacity}"> |
||||||
|
<rich-text :nodes="watermark" :style="itemStyle" v-for="(item,index) in forLength" :key="index"></rich-text> |
||||||
|
</view> |
||||||
|
</view> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
// #ifdef APP-NVUE |
||||||
|
const dom = weex.requireModule("dom"); |
||||||
|
// #endif |
||||||
|
export default { |
||||||
|
data() { |
||||||
|
return { |
||||||
|
forLength: 0, //水印数量 |
||||||
|
watermarkArea: 0 //水印大小(像素) |
||||||
|
}; |
||||||
|
}, |
||||||
|
props: { |
||||||
|
watermark: { //水印文字(支持html富文本) |
||||||
|
type: String, |
||||||
|
default: '南京仁舟科技有限公司' |
||||||
|
}, |
||||||
|
color: { //水印文字默认颜色 |
||||||
|
type: String, |
||||||
|
default: '#666' |
||||||
|
}, |
||||||
|
fontSize: { //水印文字大小 |
||||||
|
type: Number, |
||||||
|
default: 16 |
||||||
|
}, |
||||||
|
opacity: { //水印透明度 |
||||||
|
type: Number, |
||||||
|
default: 0.15 |
||||||
|
}, |
||||||
|
margin: { //水印之间上下间距 |
||||||
|
type: Number, |
||||||
|
default: 10 |
||||||
|
}, |
||||||
|
rotate: { //水印旋转角度 |
||||||
|
type: Number, |
||||||
|
default: -21 |
||||||
|
}, |
||||||
|
column: { //水印列数 |
||||||
|
type: Number, |
||||||
|
default: 3 |
||||||
|
} |
||||||
|
}, |
||||||
|
computed: { |
||||||
|
// 单个水印 |
||||||
|
moldStyle() { |
||||||
|
return `width:${this.itemWidth}px;text-align: center;font-size:${this.fontSize}px;` |
||||||
|
}, |
||||||
|
// 循环水印 |
||||||
|
itemStyle() { |
||||||
|
return `color:${this.color};font-size:${this.fontSize}px;margin:${this.margin}px;width:${this.itemWidth}px;transform:rotate(${this.rotate}deg);text-align: center;` |
||||||
|
}, |
||||||
|
// 屏幕像素 |
||||||
|
screenArea() { |
||||||
|
let height = uni.getSystemInfoSync().windowHeight + uni.getSystemInfoSync().windowTop |
||||||
|
let width = uni.getSystemInfoSync().windowWidth |
||||||
|
return Math.floor(height * width * 1.2) |
||||||
|
}, |
||||||
|
// 单个水印最大长度 |
||||||
|
itemWidth() { |
||||||
|
let windowWidth = uni.getSystemInfoSync().windowWidth |
||||||
|
return Math.floor(windowWidth / this.column - this.margin * 2) |
||||||
|
} |
||||||
|
}, |
||||||
|
watch: { |
||||||
|
watermark: { |
||||||
|
handler(v) { |
||||||
|
if (v) { |
||||||
|
this.countForLength(); |
||||||
|
} |
||||||
|
}, |
||||||
|
deep: true |
||||||
|
} |
||||||
|
}, |
||||||
|
mounted() { |
||||||
|
if (this.watermark) { |
||||||
|
this.countForLength(); |
||||||
|
} |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
countForLength() { //计算水印数量 |
||||||
|
// #ifndef APP-NVUE |
||||||
|
const query = uni.createSelectorQuery().in(this); |
||||||
|
query.select('#mold').boundingClientRect(data => { |
||||||
|
let width = data.width ? data.width : this.itemWidth |
||||||
|
let height = data.height ? data.height : 30 |
||||||
|
let itemWidth = width + this.margin * 2 |
||||||
|
let itemHeight = height + this.margin * 2 |
||||||
|
this.watermarkArea = Math.floor(itemWidth * itemHeight) |
||||||
|
this.forLength = Math.floor(this.screenArea / this.watermarkArea) |
||||||
|
}).exec(); |
||||||
|
// #endif |
||||||
|
// #ifdef APP-NVUE |
||||||
|
setTimeout(() => { |
||||||
|
const result = dom.getComponentRect(this.$refs.mold, (option) => { |
||||||
|
let size = option.size; |
||||||
|
let itemWidth = size.width + this.margin * 2 |
||||||
|
let itemHeight = size.height + this.margin * 2 |
||||||
|
this.watermarkArea = Math.floor(itemWidth * itemHeight) |
||||||
|
this.forLength = Math.floor(this.screenArea / this.watermarkArea) |
||||||
|
}); |
||||||
|
}, 50); |
||||||
|
// #endif |
||||||
|
}, |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
<style lang="scss" scoped> |
||||||
|
.zmm-watermark { |
||||||
|
position: fixed; |
||||||
|
overflow: hidden; |
||||||
|
z-index: 999; |
||||||
|
left: 0; |
||||||
|
top: 0; |
||||||
|
right: 0; |
||||||
|
bottom: 0; |
||||||
|
/* #ifndef APP-NVUE */ |
||||||
|
pointer-events: none; |
||||||
|
/* #endif */ |
||||||
|
} |
||||||
|
|
||||||
|
.zmm-watermark-content { |
||||||
|
position: fixed; |
||||||
|
left: 0; |
||||||
|
right: 0; |
||||||
|
top: 0; |
||||||
|
bottom: 0; |
||||||
|
overflow: hidden; |
||||||
|
display: flex; |
||||||
|
flex-direction: row; |
||||||
|
flex-wrap: wrap; |
||||||
|
justify-content: space-around; |
||||||
|
} |
||||||
|
|
||||||
|
.zmm-watermark-mold { |
||||||
|
position: fixed; |
||||||
|
left: 0; |
||||||
|
top: 0; |
||||||
|
opacity: 0; |
||||||
|
} |
||||||
|
</style> |
@ -0,0 +1,81 @@ |
|||||||
|
{ |
||||||
|
"id": "zmm-watermark", |
||||||
|
"displayName": "zmm-watermark-通用水印组件", |
||||||
|
"version": "1.1.5", |
||||||
|
"description": "支持富文本、自动计算所需水印数量不卡顿、自定义旋转角度等", |
||||||
|
"keywords": [ |
||||||
|
"", |
||||||
|
"水印", |
||||||
|
"水印组件", |
||||||
|
"通用水印", |
||||||
|
"自定义水印", |
||||||
|
"富文本水印" |
||||||
|
], |
||||||
|
"repository": "", |
||||||
|
"engines": { |
||||||
|
"HBuilderX": "^3.6.17" |
||||||
|
}, |
||||||
|
"dcloudext": { |
||||||
|
"sale": { |
||||||
|
"regular": { |
||||||
|
"price": "0.00" |
||||||
|
}, |
||||||
|
"sourcecode": { |
||||||
|
"price": "0.00" |
||||||
|
} |
||||||
|
}, |
||||||
|
"contact": { |
||||||
|
"qq": "" |
||||||
|
}, |
||||||
|
"declaration": { |
||||||
|
"ads": "无", |
||||||
|
"data": "插件不采集任何数据", |
||||||
|
"permissions": "无" |
||||||
|
}, |
||||||
|
"npmurl": "", |
||||||
|
"type": "component-vue" |
||||||
|
}, |
||||||
|
"uni_modules": { |
||||||
|
"platforms": { |
||||||
|
"cloud": { |
||||||
|
"tcb": "y", |
||||||
|
"aliyun": "y", |
||||||
|
"alipay": "n" |
||||||
|
}, |
||||||
|
"client": { |
||||||
|
"App": { |
||||||
|
"app-vue": "y", |
||||||
|
"app-nvue": "y" |
||||||
|
}, |
||||||
|
"H5-mobile": { |
||||||
|
"Safari": "y", |
||||||
|
"Android Browser": "y", |
||||||
|
"微信浏览器(Android)": "y", |
||||||
|
"QQ浏览器(Android)": "y" |
||||||
|
}, |
||||||
|
"H5-pc": { |
||||||
|
"Chrome": "y", |
||||||
|
"IE": "y", |
||||||
|
"Edge": "y", |
||||||
|
"Firefox": "y", |
||||||
|
"Safari": "y" |
||||||
|
}, |
||||||
|
"小程序": { |
||||||
|
"微信": "y", |
||||||
|
"阿里": "y", |
||||||
|
"百度": "y", |
||||||
|
"字节跳动": "y", |
||||||
|
"QQ": "y" |
||||||
|
}, |
||||||
|
"快应用": { |
||||||
|
"华为": "y", |
||||||
|
"联盟": "y" |
||||||
|
}, |
||||||
|
"Vue": { |
||||||
|
"vue2": "y", |
||||||
|
"vue3": "y" |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,48 @@ |
|||||||
|
#uniapp水印组件 |
||||||
|
|
||||||
|
原理 |
||||||
|
循环标签 |
||||||
|
|
||||||
|
作者 |
||||||
|
`zmm2113@qq.com` |
||||||
|
|
||||||
|
版本 |
||||||
|
> 兼容性支持:安卓、苹果、H5、微信小程序(其他平台未测试理论上支持) |
||||||
|
|
||||||
|
优势 |
||||||
|
> 支持富文本、自动计算所需水印数量不卡顿、自定义旋转角度等 |
||||||
|
|
||||||
|
注意事项 |
||||||
|
> 因为层级原因需要将组件需要放置到顶部 |
||||||
|
|
||||||
|
一、使用示例 |
||||||
|
``` |
||||||
|
<template> |
||||||
|
<view class="container"> |
||||||
|
<zmm-watermark :watermark="watermark"></zmm-watermark> |
||||||
|
</view> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import img from '@/static/logo.png'; |
||||||
|
export default { |
||||||
|
data() { |
||||||
|
return { |
||||||
|
watermark: '<h5>我是h5标签我是h5标签我是h5标签我是h5标签</h5><p style="color:#f00">我是p标签</p><br><img style="width:30px" src="' + img + '" />' |
||||||
|
|
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
``` |
||||||
|
二、配置(注意配置数据类型) |
||||||
|
|
||||||
|
配置|数据类型|默认参数|说明 |
||||||
|
-|-|-|- |
||||||
|
watermark|String|"水印文字"|水印文字(支持html富文本) |
||||||
|
color|String|"#000000"|水印文字默认颜色 |
||||||
|
fontSize|Number|16|水印文字大小 |
||||||
|
opacity|Number|0.15|水印透明度 |
||||||
|
margin|Number|20|水印之间上下间距 |
||||||
|
rotate|Number|-21|水印旋转角度 |
||||||
|
column|Number|3|水印列数 |
Loading…
Reference in new issue