Vue.js组件开发-实现广告图片浮动随屏幕滚动

实现步骤

  1. 创建 Vue 项目:使用 Vue CLI 快速搭建一个新的 Vue 项目。
  2. 编写 HTML 结构:在 Vue 组件中定义广告图片的 HTML 结构。
  3. 添加 CSS 样式:设置广告图片的初始样式和浮动效果。
  4. 添加 JavaScript 逻辑:监听窗口滚动事件,根据滚动位置更新广告图片的位置。

详细代码及注释

1. 创建 Vue 项目

安装 Vue CLI,可以使用以下命令进行安装:

bash 复制代码
npm install -g @vue/cli

然后创建一个新的 Vue 项目:

bash 复制代码
vue create ad-floating-demo
cd ad-floating-demo
2. 编写组件代码

src/components 目录下创建一个名为 AdFloating.vue 的组件,代码如下:

vue 复制代码
<template>
  <!-- 广告图片容器 -->
  <div id="ad-floating" :style="{ top: adTop + 'px' }">
    <!-- 广告图片 -->
    <img src="https://via.placeholder.com/200x300" alt="广告图片" />
  </div>
</template>

<script>
export default {
  data() {
    return {
      // 广告图片距离顶部的初始位置
      initialTop: 100,
      // 广告图片当前距离顶部的位置
      adTop: 100
    };
  },
  mounted() {
    // 当组件挂载完成后,监听窗口滚动事件
    window.addEventListener('scroll', this.handleScroll);
  },
  beforeDestroy() {
    // 在组件销毁前,移除窗口滚动事件监听器,避免内存泄漏
    window.removeEventListener('scroll', this.handleScroll);
  },
  methods: {
    handleScroll() {
      // 获取窗口滚动的垂直距离
      const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
      // 更新广告图片的位置,使其跟随滚动
      this.adTop = this.initialTop + scrollTop;
    }
  }
};
</script>

<style scoped>
#ad-floating {
  /* 固定定位,使广告图片相对于浏览器窗口定位 */
  position: fixed;
  /* 距离右侧 20px */
  right: 20px;
  /* 初始距离顶部 100px */
  top: 100px;
  /* 设置广告图片容器的宽度 */
  width: 200px;
  /* 设置广告图片容器的高度 */
  height: 300px;
  /* 为广告图片容器添加边框 */
  border: 1px solid #ccc;
  /* 为广告图片容器添加内边距 */
  padding: 10px;
  /* 为广告图片容器添加背景颜色 */
  background-color: #fff;
  /* 为广告图片容器添加阴影效果 */
  box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}

#ad-floating img {
  /* 使图片宽度适应容器 */
  width: 100%;
  /* 使图片高度适应容器 */
  height: 100%;
  /* 保持图片的宽高比,同时覆盖整个容器 */
  object-fit: cover;
}
</style>
3. 在 App.vue 中使用组件

打开 src/App.vue 文件,将 AdFloating 组件引入并使用,代码如下:

vue 复制代码
<template>
  <div id="app">
    <!-- 引入 AdFloating 组件 -->
    <AdFloating />
    <!-- 模拟页面内容 -->
    <div style="height: 2000px; padding: 20px;">
      <h1>页面内容</h1>
      <p>这是一个模拟的页面内容,用于测试广告图片的浮动效果。</p>
    </div>
  </div>
</template>

<script>
// 引入 AdFloating 组件
import AdFloating from './components/AdFloating.vue';

export default {
  name: 'App',
  components: {
    // 注册 AdFloating 组件
    AdFloating
  }
};
</script>

<style>
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
  margin-top: 60px;
}
</style>

使用说明

  1. 运行项目:在项目根目录下,使用以下命令启动开发服务器:
bash 复制代码
npm run serve
  1. 访问页面 :打开浏览器,访问 http://localhost:8080,你将看到一个带有广告图片的页面。
  2. 测试浮动效果:滚动页面,广告图片将跟随滚动,始终保持在页面的右侧。
相关推荐
CharlesYu019 小时前
前端性能优化的第一性原理,是不断缩短“用户发起意图 → 获得可用结果”之间的时间
前端
Bs_MoneyMagnet9 小时前
基于springboot+vue的医疗健康便民服务平台的设计与实现 源码+文档
java·vue.js·spring boot·后端·spring
平头哥技术团队9 小时前
Day 21 _ 页内锚点_给每段起个 id,目录写 href=_#id_,点一下页面就滚到那一段
前端·html·html5
子兮曰10 小时前
Bun v1.4.1 深度解析:从 Zig 到 Rust,一场 11 天、64 个 AI 代理的语言迁徙
前端·后端·bun
人民广场吃泡面10 小时前
什么是AI Agent?它又能给前端带来哪些效率提升?
前端·人工智能
中科三方11 小时前
两家域名注册商资质被ICANN终止:企业域名资产安全再受关注
前端·网络·安全·域名
bug总结11 小时前
uniapp vue3全局方法注册使用
前端·javascript·uni-app
华无丽言12 小时前
如何在宜搭中实现获取子表中的字段值赋值到父表中?
前端·javascript·低代码
IT_陈寒12 小时前
Vue的computed属性竟然坑了我一把
前端·人工智能·后端
威斯软科的老司机12 小时前
通俗讲解 CNN 图像识别、向量 Embedding、Softmax 概率计算这三块的简化原理
前端·人工智能·ui·数字孪生