轮播图在网站中几乎无处不在,占用地方少,交互性好。今天就来聊聊如何用vue实现一个轮播效果。

一、原理

在轮播图数组dataList中,定义一个变量currentIndex = 0表示第一张图片,默认渲染第一张图片即dataList[currentIndex],然后获取每张图片的下标。点击切换图片时把当前图片的下标赋值给currentIndex即可实现图片切换显示。

二、定义变量

data: {

dataList:["https://i1.mifile.cn/a4/xmad_15535933141925_ulkYv.jpg","https://i1.mifile.cn/a4/xmad_15532384207972_iJXSx.jpg","https://i1.mifile.cn/a4/xmad_15517939170939_oiXCK.jpg"],

currentIndex: 0, //默认显示图片

timer: null //定时器

}

三、模板渲染

  • <
  • {{index+1}}
  • >

四、点击小圆点切换图片

{{index+1}}

在li标签里执行一个点击函数,把当前下标值传进来。点击时设置currentIndex的值为当前的下标值。

methods: {

gotoPage(index) {

this.currentIndex = index;

}

}

五、左右按钮切换图片

<{{index+1}}>

定义两个变量作为参数prevIndex和nextIndex,利用计算属性算出当前图片的上一张图片或者下一张图片的下标(加1和减1操作)。

computed: {

//上一张

prevIndex() {

if(this.currentIndex == 0) {

return this.dataList.length - 1;

}else{

return this.currentIndex - 1;

}

},

//下一张

nextIndex() {

if(this.currentIndex == this.dataList.length - 1) {

return 0;

}else {

return this.currentIndex + 1;

}

}

}

六、定时器切换图片

定义一个定时器,每X秒执行一次nextIndex()函数即可。

//定时器

runInv() {

this.timer = setInterval(() => {

this.gotoPage(this.nextIndex)

}, 1000)

}

鼠标经过清除定时器就不说了,使用clearInterval(this.timer)就可以了。

七、css样式

* {

margin: 0;

padding: 0;

}

ul li {

list-style: none;

float: left;

width: 30px;

height: 40px;

line-height: 40px;

text-align: center;

cursor: pointer;

color: rgba(255,255,255,.8);

font-size: 14px;

}

.banner {

max-width: 1200px;

margin: 0 auto;

position: relative;

margin-top: 60px;

}

.banner img {

width: 100%;

display: block;

}

.banner .page {

background: rgba(0,0,0,.5);

position: absolute;

right: 0;

bottom: 0;

width: 100%;

}

.banner .page ul {

float: right;

}

.current {

color: #ff6700;

}

vue 实现无限轮播_用vue写一个轮播图效果相关推荐

  1. 写一个组织架构图组件来深入认识vue函数式高阶组件

    本文涉及到的知识点: Vue函数式组件 递归函数 深拷贝对象 正则匹配 近期在开发一个vue组织架构图组件时,为了实现高性能渲染和一些特殊用法,使用了函数式组件,要实现的效果是这样: 写一个组织架构图 ...

  2. 用CSS3写一个旋转轮播图

    用CSS3写一个旋转轮播图 今天用css3写一个不一样的轮播图3D效果. 先看下最后效果吧 1.旋转轮播图结构制作 // html <body><section><div ...

  3. vue 实现无限轮播_使用Vue制作图片轮播组件思路详解

    之前一直都没有认真的写过一个组件.以前在写业务代码的过程中,都是用的别人封装好的组件,这次尝试着写了一个图片轮播组件,虽然比不上知名的轮播组件,但它的功能基本完整,而且在写这个组件的过程中,学的东西也 ...

  4. vue如何使用原生js写动画效果_原生js写一个无缝轮播图插件(支持vue)

    轮播图插件(Broadcast.js) 前言:写这个插件的原因 前段时间准备用vue加上网易云的nodejs接口,模拟网易云音乐移动端.因为想自己写一遍所有的代码以及加固自己的flex布局,所以没有使 ...

  5. vue小项目总结与笔记【五】——一个轮播图插件vue-awesome-swiper

    本次使用github上的一个开源插件,使用的是2.6.7稳定版本.安装指定版本的方法:在插件名后面加@版本号 ,即可 npm install vue-awesome-swiper@2.6.7 --sa ...

  6. vue dplayer 加载失败_最新vue脚手架项目搭建,并解决一些折腾人的问题

    话不多说,跟好lz的操作!!! 2020/8/1 第一步: ~~~~质问三连: ~~~~~~~~1.node.js安装了吗?:ht tp://nodejs.cn/download/ ~~~~~~~~2 ...

  7. vue中headers是什么_【vue】饿了么项目-header组件开发

    1.数据传递的理解 在App.vue中用到了header组件,首先注册组件 components: {'v-header': header } 然后才能引用 :seller="seller& ...

  8. vue 定义全局弹框_用vue/react写一个全局提示弹框

    vue的实现方法 1.写一个Toast组件 Toast.vue {{title}} {{content}} {{btn}} export default { name: "Toast&quo ...

  9. vue 同级页面调用方法_【Vue】一个vue页面调用另一个vue页面中的方法

    想仿着 vue-material 的 Demo & Document 页面的效果写一个小例子. 遇到问题的地方是: 如上图红色圈出的地方,点击 button 按钮时,无法执行 toggle() ...

最新文章

  1. ShakeDrop:深度残差学习中的 ShakeDrop 正则化
  2. 获取邮箱通讯录,msn好友列表的C#源码
  3. 【unity】拓展自定义编辑器窗口(二)
  4. JsCV Core v0.2发布 Javascript图像处理系列目录
  5. mysql查询活跃连接,mysql – 使用大量可能的连接进行查询的最佳方法
  6. Ubuntu安装docker-ELK
  7. kotlin学习笔记——内联函数
  8. c#switch语句判断成绩_switch语句成绩等级例子
  9. 信息学奥赛一本通(2029:【例4.15】水仙花数)
  10. 6 个快速学会 JavaScript 的秘诀!
  11. (转)git 忽略规则
  12. rocketmq 顺序消费_RocketMQ核心概念扫盲
  13. app邀请分享免填邀请码解决方案-邀请机制的要点、形式
  14. Linux系统自动校准时间
  15. itpt_TCPL 第三章:控制流
  16. 电竞级还带主动降噪,莱仕达X2无线蓝牙耳机实测,品控值得安利
  17. TFASR 开源语音识别项目解构
  18. 「读书」人生十二法则
  19. 错误Error: A React component suspended while rendering, but no fallback UI was specified
  20. deepin标题栏边框美化

热门文章

  1. Eclipse 3.7 安装Maven插件时报错:requires 'bundle org.slf4j.api 1.6.2' but it could not be found...
  2. js快速判断IE浏览器(兼容IE10与IE11)
  3. Penang Industrial Zone
  4. html设置复选框图片,css实现图片右上角添加复选框的方法
  5. 自由自在休闲食品带给小资的冰淇淋生活
  6. 文本文件、Excel文件上传下传
  7. CDS – One Concept, Two Flavors
  8. SAP MM 评估类型 评估类别
  9. SAP AUT10 查看修改记录
  10. 为什么有人不喜欢标准成本?