Vue实现跑马灯简单效果

下面是 Vue 实现跑马灯简单效果的攻略:

概述

跑马灯是常用于展示广告、公告等信息的效果。在 Vue 中实现跑马灯,可以使用 Vue 的内置指令 v-for 和过渡效果实现。

实现步骤

  1. 使用 v-for 指令循环渲染数据
  2. 使用 CSS3 的过渡效果实现轮播效果
  3. 使用 computed 计算属性进行数据循环
  4. 使用 setInterval() 方法实现自动轮播效果
  5. 鼠标悬停时停止轮播,移开时继续轮播

下面是两个示例:

示例一:使用 v-for 指令实现

HTML 代码:

<div class="marquee">
  <ul>
    <li v-for="(item, index) in items" :key="index" v-text="item"></li>
  </ul>
</div>

CSS 代码:

.marquee ul {
  list-style: none;
  padding-left: 0;
  white-space: nowrap;
  width: 100%;
  overflow: hidden;
  text-align: center;
}

.marquee li {
  display: inline-block;
  padding: 0 20px;
  margin-right: 20px;
  border-right: 2px solid #666;
  animation: roll 10s linear infinite;
}

@keyframes roll {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(-100%);
  }
}

JavaScript 代码:

export default {
  data() {
    return {
      items: [
        'Vue.js 是一个构建数据驱动的 web 界面的 JavaScript 框架',
        'Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件',
        'Vue.js 提供了 MVVM 数据绑定和一个可组合的组件系统,具有简单、灵活的 API。',
        'Vue.js 是一个渐进式框架,允许开发者在现有项目中逐步应用',
        '欢迎使用 Vue.js!'
      ],
      currentIndex: 0,
      timer: null
    }
  },
  computed: {
    currentItem() {
      return this.items[this.currentIndex]
    }
  },
  mounted() {
    this.timer = setInterval(() => {
      this.currentIndex = ++this.currentIndex % this.items.length
    }, 3000)
  },
  beforeDestroy() {
    clearInterval(this.timer)
  }
}

首先在 HTML 代码里使用 v-for 指令循环渲染数据,然后在 CSS 代码里使用 animation 属性实现轮播效果,最后在 JavaScript 代码里使用 setInterval() 方法实现自动轮播效果,并添加了 beforeDestroy() 生命周期函数以及 clearInterval() 方法在组件卸载前停止轮播。

示例二:使用 computed 计算属性实现

HTML 代码:

<div class="marquee">
  <ul>
    <li v-text="currentItem"></li>
  </ul>
</div>

CSS 代码同示例一。

JavaScript 代码:

export default {
  data() {
    return {
      items: [
        'Vue.js 是一个构建数据驱动的 web 界面的 JavaScript 框架',
        'Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件',
        'Vue.js 提供了 MVVM 数据绑定和一个可组合的组件系统,具有简单、灵活的 API。',
        'Vue.js 是一个渐进式框架,允许开发者在现有项目中逐步应用',
        '欢迎使用 Vue.js!'
      ],
      currentIndex: 0,
      timer: null
    }
  },
  computed: {
    currentItem() {
      return this.items[this.currentIndex]
    }
  },
  mounted() {
    this.timer = setInterval(() => {
      this.currentIndex = ++this.currentIndex % this.items.length
    }, 3000)
  },
  beforeDestroy() {
    clearInterval(this.timer)
  }
}

这个示例和示例一的区别在于,使用 computed 计算属性代替 v-for 循环渲染数据,并在 computed 属性里定义一个计算属性 currentItem,返回当前需要展示的数据,然后在 JavaScript 代码里使用 setInterval() 方法实现自动轮播效果,并添加了 beforeDestroy() 生命周期函数以及 clearInterval() 方法在组件卸载前停止轮播。

以上就是 Vue 实现跑马灯简单效果的攻略,两个示例虽然实现的效果一样,但是实现方法不同,请按需选择。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue实现跑马灯简单效果 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • Vant 在vue-cli 4.x中按需加载操作

    本文将详细讲解在 vue-cli 4.x 中如何使用 Vant 实现按需加载操作。 什么是按需加载 按需加载是指根据代码的实际使用情况,在需要的时候才去加载相应的代码。对于大型 Web 应用来说,使用按需加载可以提高应用的性能和用户体验。 在 Vue 项目中,按需加载通常是通过引入 babel-plugin-import 插件实现的,而 Vant 框架也提供…

    Vue 2023年5月28日
    00
  • Vuex中actions优雅处理接口请求的方法

    下面是对于“Vuex中actions优雅处理接口请求的方法”的完整攻略: 1. 使用async/await处理接口请求 async/await 是一个结合了 Promise 和 Generator 的语法糖,它能让我们以同步的方式编写异步代码。我们可以通过它来简化数据请求的处理。 首先我们需要在 actions 中编写异步请求函数。例如,我们需要获取用户的信…

    Vue 2023年5月28日
    00
  • vue打包相关细节整理(小结)

    Vue打包相关细节整理(小结) 前言 Vue是一个非常流行的JavaScript框架,其中一个主要的功能就是在浏览器中动态生成HTML内容。这个框架的性能比较优秀,可维护性较高,因此受到了很多开发者的喜欢和推崇。但是,当我们准备把Vue应用程序部署到生产环境时,我们需要考虑到Vue的打包和优化。 打包工具 我们需要使用一个打包工具来将Vue应用程序打包成可部…

    Vue 2023年5月28日
    00
  • vue中组件通信的八种方式(值得收藏!)

    Vue中组件通信的八种方式 在Vue框架中,组件通信是十分重要的一环,特别是在大型项目中。Vue提供了多种方式来实现组件之间的通信。以下是Vue中组件通信的八种方式: 一、父向子传递数据 父组件可以通过prop传递数据给子组件。子组件通过props选项声明自己接受哪些来自父组件的属性。 例如,父组件向子组件传递一个字符串: <!– 父组件 –&gt…

    Vue 2023年5月27日
    00
  • JS实现的点击表头排序功能示例

    下面是详细的攻略: 什么是点击表头排序功能? 点击表头排序是一种JavaScript编写的功能,在表格中点击表头时,可以按照表头所指向的列数据的大小为依据,对表格的行进行排序的功能。 代码实现 以下是一份实现点击表头排序功能的代码示例,其中使用jQuery库和ES6箭头函数: // 获取表格 var table = $(‘table.sortable’); …

    Vue 2023年5月28日
    00
  • vue获取后台json字符串方式

    获取后台 JSON 字符串的方式在 Vue.js 中有很多种方法,下面介绍两种常见的方法: 方法一 使用Vue.js内置的http模块 (已弃用) 在 Vue.js 中使用 http 模块可以直接获取后台的 JSON 字符串,示例代码如下: <template> <div> <h2>{{title}}</h2>…

    Vue 2023年5月27日
    00
  • vue中this.$refs的坑及解决

    vue中this.$refs的坑及解决 在Vue的开发过程中,我们通过this.$refs来访问DOM元素或子组件实例。但是在使用的过程中,这个特性也有一些坑点需要我们注意。接下来我会详细讲解这些坑点以及如何解决它们。 坑点1:this.$refs在初始化时可能为空 在组件的生命周期中,created钩子函数是在组件的数据和方法都准备就绪,但是DOM并不一定…

    Vue 2023年5月28日
    00
  • Vue3发送post请求出现400 Bad Request报错的解决办法

    以下是 “Vue3发送post请求出现400 Bad Request报错的解决办法” 的完整攻略: 问题描述 在使用 Vue3 进行 post 请求时,可能会遇到 400 Bad Request 错误,这通常是因为请求的数据格式或参数设置错误导致的。 解决方法 1. 设置请求头 可以尝试设置请求头中的 Content-Type 和 Accept 字段,确保发…

    Vue 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部