当前位置:首页 > 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。安装后简单配置即可使用。

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实现列表循环

Vue 列表循环的实现方法 在 Vue 中,可以通过 v-for 指令实现列表循环渲染。以下是几种常见的实现方式: 基础列表渲染 <template> <ul>…

jquery 列表

jquery 列表

jQuery 列表操作 jQuery 提供了多种方法来操作 HTML 列表(如 <ul> 或 <ol>)。以下是一些常见的操作方式: 动态添加列表项 使用 append()…

vue实现搜索列表

vue实现搜索列表

Vue 实现搜索列表功能 在 Vue 中实现搜索列表功能通常需要以下几个关键步骤: 数据绑定与列表渲染 使用 v-model 绑定搜索输入框,监听用户输入。通过 v-for 指令渲染过滤后的列表数据…

vue实现列表分页

vue实现列表分页

Vue 列表分页实现方法 基础分页实现 安装依赖(如使用第三方库) npm install vue-paginate 模板部分示例 <template> <div>…

vue实现列表过渡

vue实现列表过渡

vue实现列表过渡的方法 在Vue中,可以使用内置的<transition-group>组件来实现列表项的过渡效果。该组件专门为动态列表设计,能够处理元素的添加、删除和顺序变化。…

vue列表展开实现

vue列表展开实现

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