当前位置:首页 > VUE

vue实现列表水印

2026-02-09 11:01:18VUE

实现列表水印的方法

使用CSS背景图

通过CSS的background-image属性为列表容器添加水印背景。水印可以是文字或图片,通过调整透明度实现半透明效果。

<template>
  <div class="watermarked-list">
    <ul>
      <li v-for="item in items" :key="item.id">{{ item.text }}</li>
    </ul>
  </div>
</template>

<style>
.watermarked-list {
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200" opacity="0.1"><text x="50%" y="50%" font-size="20" text-anchor="middle" dominant-baseline="middle" transform="rotate(-45, 100, 100)">WATERMARK</text></svg>');
  background-repeat: repeat;
}
</style>

使用Canvas动态生成水印

通过Canvas绘制水印文字,将Canvas转为图片后设置为列表背景。这种方式可以动态调整水印内容和样式。

export default {
  methods: {
    generateWatermark(text) {
      const canvas = document.createElement('canvas');
      canvas.width = 200;
      canvas.height = 200;
      const ctx = canvas.getContext('2d');
      ctx.font = '20px Arial';
      ctx.fillStyle = 'rgba(0, 0, 0, 0.1)';
      ctx.textAlign = 'center';
      ctx.textBaseline = 'middle';
      ctx.translate(100, 100);
      ctx.rotate(-Math.PI / 4);
      ctx.fillText(text, 0, 0);
      return canvas.toDataURL('image/png');
    }
  },
  mounted() {
    const watermark = this.generateWatermark('CONFIDENTIAL');
    document.querySelector('.watermarked-list').style.backgroundImage = `url(${watermark})`;
  }
}

使用伪元素叠加

通过CSS伪元素在列表容器上叠加水印内容,这种方式不需要修改DOM结构。

.watermarked-list {
  position: relative;
}
.watermarked-list::after {
  content: "WATERMARK";
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 48px;
  color: rgba(0, 0, 0, 0.1);
  pointer-events: none;
  transform: rotate(-45deg);
}

使用第三方库

对于复杂的水印需求,可以使用专门的水印库如vue-watermark。安装后简单配置即可使用。

vue实现列表水印

import VueWatermark from 'vue-watermark'

Vue.use(VueWatermark, {
  text: 'SECRET',
  opacity: 0.2,
  width: 200,
  height: 200,
  rotate: -45
})
<template>
  <div v-watermark>
    <ul>
      <li v-for="item in items" :key="item.id">{{ item.text }}</li>
    </ul>
  </div>
</template>

每种方法各有优缺点,CSS背景图最简单但不够灵活,Canvas可以动态生成但稍复杂,伪元素不需要额外DOM节点,第三方库功能最全面但增加依赖。根据具体需求选择合适方案。

标签: 水印列表
分享给朋友:

相关文章

vue实现水印组件

vue实现水印组件

Vue 水印组件实现 基础水印组件实现 创建一个基础水印组件,通过 props 接收文本、颜色、大小等参数: <template> <div class="watermark-…

js实现列表

js实现列表

使用 JavaScript 实现列表 JavaScript 提供了多种方式来实现列表功能,包括数组操作、DOM 元素动态生成等。以下是几种常见的实现方法: 使用数组存储列表数据 数组是 JavaSc…

uniapp 内容列表

uniapp 内容列表

uniapp 内容列表的实现方法 在uniapp中实现内容列表通常需要结合组件和数据绑定。以下是一个常见的方法: 模板部分 <template> <view class="c…

vue实现列表页

vue实现列表页

Vue 实现列表页的方法 数据绑定与渲染 使用 v-for 指令动态渲染列表数据,结合 :key 确保渲染性能。示例代码: <template> <ul> <…

vue列表怎么实现

vue列表怎么实现

Vue 列表实现方法 使用 v-for 指令 Vue 中列表渲染主要通过 v-for 指令实现,可以遍历数组或对象。 <template> <ul> <li…

vue实现多选列表

vue实现多选列表

Vue 实现多选列表的方法 使用 v-model 绑定数组 在 Vue 中,可以利用 v-model 指令绑定一个数组来实现多选功能。当用户选择多个选项时,选中的值会自动添加到数组中。 <te…