vue.js实现简单轮播图效果


Posted in Javascript onOctober 10, 2017

学习了vue.js也有一段时间了,做了个小demo来熟悉一下,很常见的demo,-------轮播图,没学vue之前的轮播图用JavaScript或者jquery都非常简单,发现用vue来写也挺有意思的。说下简单的思路,图片的轮播用v-if或者v-show来代替原来的Js滑动,过度效果用transition可简单实现,注意,滑动过程中是能看见两张图的,所以要用两个transition。

(1)先写出整体的框架

<template>
<div class="slide-show">
<div class="slide-img">
<transition name="slide-trans" >
<img v-if='ifshow' :src='imgArray[nowindex]'>
</transition>
<transition name="slide-trans-old">
  <img v-if="!ifshow" :src="imgArray[nowindex]">
 </transition>
<ul class="slide-pages">
<li v-for="(item,index) in imgArray">
<span :class="{on :index===nowindex}" @click="goto(index)"></span>
</li>
</ul>
</div>
</div>
</template>

根据imgArray这个照片的数组渲染小圆点的数量,为span绑定on为小圆点点亮的状态,照片的显示隐藏通过自定义变量ifshow来显示,nowindex则控制轮播对应的照片。

(2)轮播图的数组,如果是本地的图片,而且不放在static文件下的,请用require圈上路径,否则路径会报错。如果是从后台服务器获取的则不需要。

data(){
return{
imgArray: [
require('../../img/item_01.png'),
require('../../img/item_02.png'),
require('../../img/item_03.png'),
require('../../img/item_04.png')
]
}
}

(3)主要就是通过改变自定义变量nowindex来改变轮播图的状态,要注意滑动的过程是能看见两张图的,所以在goto函数中设置了一个短暂的定时器,让一张显示另一张隐藏,分别加上不同的过度效果。

<script type="text/javascript">
export default {
props:{
imgArray:{
type:Array,
default:[]
}
},
data() {
return {
ifshow:true,
nowindex:0,
}
},
created(){
this.timerun()
},
computed:{
nextindex(){
if(this.nowindex === this.imgArray.length -1){
return 0
}else{
return this.nowindex + 1
}
}
},
methods: {
goto(index){
let that = this;
this.ifshow = false;
setTimeout(function(){
that.ifshow = true;
that.nowindex = index;
},100)

},
timerun(){
 let that = this;
 setInterval(function(){
 that.goto(that.nextindex)
 },2000)
 }
}
}
</script>

到这里,这个简单的轮播图就到此结束了。

关于vue.js的学习教程,请大家点击专题vue.js组件学习教程、Vue.js前端组件学习教程进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
Jan 03 Javascript
javascript学习笔记(七) js函数介绍
Jun 19 Javascript
使用Js让Html中特殊字符不被转义
Nov 05 Javascript
在Javascript中处理字符串之big()方法的使用
Jun 08 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
Dec 23 Javascript
JS作用域深度解析
Dec 29 Javascript
inner join 内联与left join 左联的实例代码
Sep 18 Javascript
Node.js使用Express.Router的方法
Nov 14 Javascript
node.js将MongoDB数据同步到MySQL的步骤
Dec 10 Javascript
vue scroller返回页面记住滚动位置的实例代码
Jan 29 Javascript
Vue2 轮播图slide组件实例代码
May 31 Javascript
node.js学习笔记之koa框架和简单爬虫练习
Dec 13 Javascript
seajs中最常用的7个功能、配置示例
Oct 10 #Javascript
SeaJS中use函数用法实例分析
Oct 10 #Javascript
vue.js如何将echarts封装为组件一键使用详解
Oct 10 #Javascript
seajs模块压缩问题与解决方法实例分析
Oct 10 #Javascript
基于vue的换肤功能的示例代码
Oct 10 #Javascript
seajs中模块依赖的加载处理实例分析
Oct 10 #Javascript
利用JS hash制作单页Web应用的方法详解
Oct 10 #Javascript
You might like
xajax写的留言本
2006/11/25 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
JavaScript 中的replace方法说明
2007/04/13 Javascript
JS 自定义带默认值的函数
2011/07/21 Javascript
SeaJS入门教程系列之使用SeaJS(二)
2014/03/03 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
Nodejs极简入门教程(一):模块机制
2014/10/25 NodeJs
CKEditor无法验证的解决方案(js验证+jQuery Validate验证)
2016/05/09 Javascript
JavaScript的==运算详解
2016/07/20 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
2017/03/07 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
详解使用webpack打包编写一个vue-toast插件
2017/11/08 Javascript
element-ui中按需引入的实现
2019/12/25 Javascript
Python lxml模块安装教程
2015/06/02 Python
Python通过poll实现异步IO的方法
2015/06/04 Python
python实现数独算法实例
2015/06/09 Python
Python导入模块时遇到的错误分析
2017/08/30 Python
Django管理员账号和密码忘记的完美解决方法
2018/12/06 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
Pytorch基本变量类型FloatTensor与Variable用法
2020/01/08 Python
Anaconda和ipython环境适配的实现
2020/04/22 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
保加利亚手表、香水、化妆品和珠宝购物网站:Brasty.bg
2020/04/22 全球购物
数据库方面面试题
2012/04/22 面试题
高中生学习生活的自我评价
2013/11/27 职场文书
前台接待岗位职责
2013/12/03 职场文书
小学毕业典礼主持词
2014/03/27 职场文书
实习生岗位职责
2014/04/12 职场文书
商务日语专业的自荐信
2014/05/23 职场文书
艺术学院毕业生求职信
2014/07/09 职场文书
贫困证明书格式及范文
2014/10/15 职场文书
出国导师推荐信
2015/03/25 职场文书
功夫熊猫观后感
2015/06/10 职场文书
MySQL分区路径子分区再分区
2022/04/13 MySQL