Vue实现跑马灯简单效果

yizhihongxing

下面是 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日

相关文章

  • vue scss后缀文件background-image路径错误的解决

    当使用Vue结合SCSS编写样式时,如果在样式中设置了background-image属性,并且设置的路径存在问题,那么会导致图片无法正常加载。下面是解决该问题的完整攻略: 问题分析 样式中设置background-image属性使用的是相对路径,而在Vue项目中,其相对路径往往是相对于main.js文件或者Vue组件所在位置的路径。如果图片的相对路径出现问…

    Vue 2023年5月28日
    00
  • 关于Vue代码可读性的几点建议

    关于Vue代码可读性的几点建议会涉及到多个方面,我将详细讲解: 1. 格式规范 1.1 使用合适的缩进 在编写Vue代码时,应该合理地使用缩进来让代码更加易读。通常推荐使用4个空格作为缩进,而不是使用制表符。例如: <template> <div> <h1>{{ title }}</h1> <p>{…

    Vue 2023年5月29日
    00
  • 你可能不知道的typescript实用小技巧

    作为 Typescript 常见的使用者,也许你已经对它的一些语法特性熟悉,但是,你可能不知道的 Typescript 实用小技巧可不止这些。接下来我将为你讲解一些不太为人所知的 Typescript 实用小技巧,希望能够对你的开发带来帮助。 1. 类型断言(Type Assertion) 类型断言是一种告诉编译器更确切的类型信息的方式,它可以强制类型检查器…

    Vue 2023年5月28日
    00
  • 在vue中使用vant TreeSelect分类选择组件操作

    下面是关于在vue中使用vant TreeSelect分类选择组件的详细攻略。 1. 安装vant 首先,我们需要安装vant组件库,可以使用npm或yarn来安装,命令如下: npm install vant -S // 使用npm yarn add vant // 使用yarn 2. 引入需要使用的TreeSelect组件 在需要使用组件的.vue文件中…

    Vue 2023年5月28日
    00
  • vue中对象的赋值Object.assign({}, row)方式

    在Vue中,我们经常需要对对象进行赋值。而Object.assign()是一个常用的对象赋值操作,尤其常用于实现浅拷贝。在Vue中,我们可以使用Object.assign({}, row)来实现浅拷贝,将row对象的所有属性和方法赋值给一个空对象。 以下是Object.assign()的基本语法: Object.assign(target, source1,…

    Vue 2023年5月28日
    00
  • Vue3+TS实现数字滚动效果CountTo组件

    下面我将为您详细讲解“Vue3+TS实现数字滚动效果CountTo组件”的完整攻略。 1. 项目背景 数字滚动效果在 web 开发中经常用于展示数据增量或者倒计时情况,通过 CountTo 组件,我们可以方便地实现数字滚动动画效果。本文以 Vue3 和 TypeScript 的方式实现该组件。 2. 技术选型 CountTo 组件的实现需要使用到 Vue3 …

    Vue 2023年5月27日
    00
  • vue项目中使用require.context引入组件

    Vue项目中使用require.context引入组件可以方便我们快速地载入一批组件,特别是在开发大型项目时,能够大大提高效率。下面是具体的步骤: 安装依赖 首先,我们需要安装babel-plugin-require-context-hook插件来解析使用require.context方法引入的组件。在项目根目录下执行以下命令: npm install ba…

    Vue 2023年5月28日
    00
  • 什么是Vue.js框架 为什么选择它?(第一课)

    什么是Vue.js框架? Vue.js是一款用于构建用户界面的渐进式JavaScript框架。它的核心是一个轻量级的,响应式的数据绑定系统,使开发者能够更轻松地构建交互式的用户界面。Vue.js还提供了一系列工具和插件,用于帮助我们轻松地组织和管理我们的代码。 总的来说,Vue.js框架有以下特点: 渐进式框架:Vue.js是一个渐进式的框架,这意味着你可以…

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