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. 测试浮动效果:滚动页面,广告图片将跟随滚动,始终保持在页面的右侧。
相关推荐
百度地图开放平台1 分钟前
LBS 开发微课堂|智能调度API升级:解决循环取货场景下的调度难题
前端·javascript
Nymph_Zhu13 分钟前
vue3+antV G6节点与文本框实现
vue.js·element-plus·g6
lh_125416 分钟前
VUE2脚手架的下载与安装
vue.js
cypking18 分钟前
vue实现一个pdf在线预览,pdf选择文本并提取复制文字触发弹窗效果
前端·vue.js·pdf
飘逸飘逸21 分钟前
若依前后端分离版使用Electron打包前端Vue为Exe文件
前端·vue.js·electron·vue·ruoyi
入门级前端开发22 分钟前
npm install 报错ERESOLVE
前端·npm·node.js
anyup1 小时前
最终!我还是抛弃了 VSCode 这个开发工具
前端·aigc·visual studio code
木亦Sam1 小时前
前端安全之 CSRF 攻击的防御策略
前端
光影少年1 小时前
es6+新增特性有哪些
前端·javascript·es6
木亦Sam1 小时前
前端代码优化之函数节流与防抖技巧
前端