首页 > 其他分享 >vue2实现轮播图

vue2实现轮播图

时间:2024-08-13 10:54:11浏览次数:14  
标签:轮播 实现 items transform vue2 currentIndex carousel 10px

1.在components路径下新建文件Carousel.vue,在Carousel.vue文件中创建一个 Vue 组件实现轮播图的功能

<script>
export default {
  data() {
    return {
      currentIndex: 0,
      items: [
        require('../assets/logo.png'),
        require('../assets/logo.png'),
      ],
      interval: null
    };
  },
  computed: {
    carouselStyle() {
      return {
        transform: `translateX(-${this.currentIndex * 100}%)`,
        transition: 'transform 0.5s ease-in-out'
      };
    }
  },
  methods: {
    prev() {
      this.currentIndex = (this.currentIndex - 1 + this.items.length) % this.items.length;
    },
    next() {
      this.currentIndex = (this.currentIndex + 1) % this.items.length;
    },
    goToIndex(index) {
      this.currentIndex = index;
    },
    startAutoplay() {
      this.interval = setInterval(() => {
        this.next();
      }, 3000);
    },
    stopAutoplay() {
      clearInterval(this.interval);
    }
  },
  mounted() {
    this.startAutoplay();
  },
  beforeDestroy() {
    this.stopAutoplay();
  }
};
</script>

<style scoped>
.carousel {
  position: relative;
  width: 100%;
  overflow: hidden;
}

.carousel-inner {
  display: flex;
  transition: transform 0.5s ease-in-out;
}

.carousel-item {
  min-width: 100%;
  box-sizing: border-box;
}

.carousel-image {
  width: 100%;
  display: block;
}

.carousel-control {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  background: rgba(0, 0, 0, 0.5);
  color: #fff;
  border: none;
  cursor: pointer;
  padding: 10px;
  font-size: 18px;
}

.prev {
  left: 10px;
}

.next {
  right: 10px;
}

.carousel-dots {
  position: absolute;
  bottom: 10px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
}

.carousel-dots span {
  height: 10px;
  width: 10px;
  margin: 0 5px;
  background-color: #bbb;
  border-radius: 50%;
  display: inline-block;
  cursor: pointer;
}

.carousel-dots .active {
  background-color: #717171;
}
</style>

*items: []中为存在assets文件夹下的图片列表

2.在主 Vue 实例中,或者在任何其他组件中,可以使用刚刚创建的轮播图组件。

<script>
import Carousel from './components/Carousel.vue';

export default {
  components: {
    Carousel
  }
};
</script>

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

组件通过 data 管理当前显示的图片索引(currentIndex),并包含前一张、下一张的切换方法(prev 和 next),以及根据用户点击的指示点跳转到特定图片的方法(goToIndex)。
carousel-inner 使用 CSS transform 属性来移动图片的视图,实现轮播效果。箭头按钮和指示点样式也被定义。
在 mounted 生命周期钩子中启动自动播放,并在 beforeDestroy 钩子中停止它。
效果:

标签:轮播,实现,items,transform,vue2,currentIndex,carousel,10px
From: https://www.cnblogs.com/ziziju/p/18356434

相关文章

  • 程序员失业在家,我是如何用AI绘画搞钱?掌握这几个方法实现经济自由!
    大部分的设计师除了主业以外,都会利用空余时间去接单做副业。单子包括但不限于产品/品牌LOGO、电商产品图设计、海报、室内设计图等等,单价在几十到上千不等。那么普通人也能像他们一样去接单赚钱吗?在AI绘画还没出现前,没有任何设计经验的人,可以说是完全没有机会!!但是,时代......
  • 如何在 Flask 中实现用户登录
    在Flask中实现用户登录功能通常涉及以下几个步骤:设置Flask应用、创建用户模型、处理用户注册、实现登录逻辑以及保护受限路由。下面就是我总结得一些经验,可以一起聊一聊。1、问题背景在使用Flask框架构建Web应用程序时,通常需要实现用户登录功能。常见的需求是将......
  • 使用 navigateTo 实现灵活的路由导航
    title:使用navigateTo实现灵活的路由导航date:2024/8/13updated:2024/8/13author:cmdragonexcerpt:摘要:本文详细介绍Nuxt.js中的navigateTo函数,包括基本用法、在路由中间件中使用、导航到外部URL和新标签页打开链接的方法,以及参数详解和注意事项,展示了该函数......
  • vue3的defineAsyncComponent是如何实现异步组件的呢?
    前言在上一篇给我5分钟,保证教会你在vue3中动态加载远程组件文章中,我们通过defineAsyncComponent实现了动态加载远程组件。这篇文章我们将通过debug源码的方式来带你搞清楚defineAsyncComponent是如何实现异步组件的。注:本文使用的vue版本为3.4.19欧阳写了一本开源电子书vue3编......
  • 基于springboot的宠物医院管理系统的设计与实现 毕业设计-附源码00203
    目录摘要1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.2系统流程分析2.2.1系统开发流程2.2.2用户登录流程2.2.3系统操作流程2.2.4添加信息流程2.2.5修改信息流程2.2.6删除信息流程2.3 系统......
  • 淘客APP的功能架构与技术挑战:实现高效返利
    淘客APP的功能架构与技术挑战:实现高效返利大家好,我是阿可,微赚淘客系统及省赚客APP创始人,是个冬天不穿秋裤,天冷也要风度的程序猿!淘客APP作为一种新型的电商推广工具,其核心功能在于为用户提供商品返利服务,帮助用户在购物的同时获得额外的收益。本文将探讨淘客APP的功能架构......
  • 【C#】实现读写文件
    ///<summary>///同步锁///</summary>privatestaticreadonlyobjectsyncRoot=newobject();///<summary>///读同步锁///</summary>privatestaticreadonlyobjectsyncReadRoot=newobject();///<summary>///覆盖写文件......
  • 最新计算机专业开题报告案例65:基于springboot的农产品商场的设计与实现
    计算机毕业设计100套微信小程序项目实战java项目实战需要源码可以滴滴我目录1.选题意义2. 研究内容3.研究方法4.参考文献1.选题意义    农产品商场的建设可以促进农产品的销售和流通,将农产品直接连接到消费者,缩短流通链条,提高农产品的市场反应速度和销......
  • 基于java实现MYDB数据库
    整体结构--MYDB分为后端和前端,前后端通过socket进行交互前端(客户端)用于读取用户输入,并发送到后端执行,输出返回结果MYDB后端需要解析SQL--MYDB的后端分为5个模块分别是:1、TransactionManager事务管理器2、DataManager数据管理器3、VersionManager版本管理器4、Index......
  • 利用数组实现约瑟夫环算法
    问题来历:   据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式,41个人排成一个圆圈,由第1个人开始报数,每报数到第3人该人就必须自杀,然后再由下一......