当前位置:首页 > VUE

vue实现漂浮广告

2026-01-19 04:27:10VUE

实现漂浮广告的基本思路

在Vue中实现漂浮广告可以通过动态样式绑定和定时器控制广告元素的位置。核心是利用CSS的position: fixedabsolute定位,结合JavaScript修改top/left等属性实现移动效果。

基础实现代码示例

<template>
  <div 
    class="floating-ad"
    :style="{
      left: position.x + 'px',
      top: position.y + 'px',
    }"
    @mouseenter="pauseMove"
    @mouseleave="resumeMove"
  >
    <!-- 广告内容 -->
    <img src="ad-image.png" alt="广告">
  </div>
</template>

<script>
export default {
  data() {
    return {
      position: { x: 0, y: 0 },
      direction: { x: 1, y: 1 },
      speed: 2,
      moveInterval: null
    }
  },
  mounted() {
    this.startMove();
  },
  beforeDestroy() {
    clearInterval(this.moveInterval);
  },
  methods: {
    startMove() {
      this.moveInterval = setInterval(() => {
        this.position.x += this.direction.x * this.speed;
        this.position.y += this.direction.y * this.speed;

        // 边界检测
        if (this.position.x <= 0 || this.position.x >= window.innerWidth - 100) {
          this.direction.x *= -1;
        }
        if (this.position.y <= 0 || this.position.y >= window.innerHeight - 100) {
          this.direction.y *= -1;
        }
      }, 16);
    },
    pauseMove() {
      clearInterval(this.moveInterval);
    },
    resumeMove() {
      this.startMove();
    }
  }
}
</script>

<style>
.floating-ad {
  position: fixed;
  width: 100px;
  height: 100px;
  cursor: pointer;
  z-index: 9999;
}
</style>

优化方向

边界限制增强 通过window.innerWidthwindow.innerHeight动态获取可视区域尺寸,确保广告不会超出屏幕范围。

vue实现漂浮广告

性能优化 使用requestAnimationFrame替代setInterval可获得更流畅的动画效果:

move() {
  this.position.x += this.direction.x * this.speed;
  this.position.y += this.direction.y * this.speed;

  // 边界检测逻辑
  if (this.position.x <= 0 || this.position.x >= window.innerWidth - 100) {
    this.direction.x *= -1;
  }
  if (this.position.y <= 0 || this.position.y >= window.innerHeight - 100) {
    this.direction.y *= -1;
  }

  this.animationId = requestAnimationFrame(this.move);
}

关闭功能 添加关闭按钮提升用户体验:

vue实现漂浮广告

<div class="floating-ad">
  <span class="close-btn" @click="closeAd">×</span>
  <!-- 广告内容 -->
</div>

<style>
.close-btn {
  position: absolute;
  right: 5px;
  top: 0;
  cursor: pointer;
}
</style>

移动端适配

针对移动设备需要添加触摸事件支持:

@touchstart="pauseMove"
@touchend="resumeMove"

并调整广告尺寸:

@media (max-width: 768px) {
  .floating-ad {
    width: 80px;
    height: 80px;
  }
}

标签: 广告vue
分享给朋友:

相关文章

vue实现后退

vue实现后退

Vue 实现后退功能的方法 在 Vue 中实现后退功能通常可以通过以下几种方式完成,具体取决于应用场景和需求。 使用 window.history API 通过原生 JavaScript 的 win…

vue实现粘贴

vue实现粘贴

Vue 实现粘贴功能的方法 在 Vue 中实现粘贴功能通常涉及监听粘贴事件并处理剪贴板数据。以下是几种常见的实现方式: 监听原生粘贴事件 通过 @paste 指令或原生 addEventListen…

vue 实现树状

vue 实现树状

Vue 实现树状结构的方法 递归组件实现树状结构 递归组件是 Vue 中实现树状结构的常见方法。通过组件自身调用自身,可以轻松构建多层级树状结构。 <template> <ul…

vue实现spa

vue实现spa

Vue 实现 SPA(单页应用)的步骤 创建 Vue 项目 使用 Vue CLI 快速初始化一个 Vue 项目,确保安装了 Vue Router 作为路由管理工具。运行以下命令创建项目: vue c…

vue 实现筛选功能

vue 实现筛选功能

实现筛选功能的基本思路 在Vue中实现筛选功能通常涉及以下几个核心步骤:数据绑定、筛选逻辑处理、结果展示。以下是具体实现方法。 数据准备 准备需要筛选的数据源,通常是一个数组,可以存储在Vue组件的…

vue实现批量删除

vue实现批量删除

实现批量删除功能 在Vue中实现批量删除功能通常需要结合前端界面和后端API交互。以下是一个常见的实现方案: 数据准备与界面交互 创建数据列表和选中状态管理 data() { return {…