当前位置:首页 > 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中实现列表循环主要依赖于v-for指令,该指令基于源数据多次渲染元素或模板块。 基础数组循环 使用v-for遍历数组时,语法为item in items或(item, i…

vue列表展开实现

vue列表展开实现

Vue 列表展开实现方法 使用 v-for 和 v-show 控制展开状态 通过 v-for 渲染列表项,配合 v-show 控制子内容的显示隐藏。需要为每个列表项维护一个展开状态。 <tem…

vue视频列表实现

vue视频列表实现

Vue 视频列表实现 数据准备 定义一个数组存储视频信息,每个视频对象包含标题、封面图、播放地址等属性。 data() { return { videos: [ {…

vue实现触摸滚动列表

vue实现触摸滚动列表

vue实现触摸滚动列表的方法 使用Vue实现触摸滚动列表需要结合移动端的触摸事件和滚动行为。以下是几种常见实现方式: 使用第三方库(推荐) 安装better-scroll库: npm in…

轮播列表vue怎么实现

轮播列表vue怎么实现

使用 Vue 实现轮播列表 基于 Swiper 插件实现 安装 Swiper 依赖: npm install swiper 引入 Swiper 和样式: import { Swiper, Swip…

vue实现列表单选

vue实现列表单选

实现列表单选的方法 在Vue中实现列表单选功能,可以通过多种方式完成。以下是几种常见的实现方法: 使用v-model绑定单选值 通过v-model绑定一个变量来存储当前选中的项,结合v-for渲染…