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 相关文章推荐
由Javascript实现的页面日历
Nov 04 Javascript
js取消单选按钮选中并判断对象是否为空
Nov 14 Javascript
js中的caller和callee属性介绍和例子
Jun 07 Javascript
js实现简洁大方的二级下拉菜单效果代码
Sep 01 Javascript
jQuery qrcode生成二维码的方法
Apr 03 Javascript
JS全局变量和局部变量最新解析
Jun 24 Javascript
原生js仿jquery animate动画效果
Jul 13 Javascript
Angularjs单选改为多选的开发过程及问题解析
Feb 17 Javascript
JS中的数组转变成JSON格式字符串的方法
May 09 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
Jul 31 Javascript
vue的常用组件操作方法应用分析
Apr 13 Javascript
浅谈Angular 观察者模式理解
Nov 01 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
php打包压缩文件之ZipArchive方法用法分析
2016/04/30 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
2016/05/22 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
ThinkPHP中create()方法自动验证实例
2017/04/26 PHP
Laravel 批量更新多条数据的示例
2017/11/27 PHP
PHP设计模式之组合模式定义与应用示例
2020/02/01 PHP
JQuery 简便实现页面元素数据验证功能
2007/03/24 Javascript
Jquery中获取iframe的代码
2011/01/11 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
关于Javascript 对象(object)的prototype
2014/05/09 Javascript
jQuery实现的调整表格行tr上下顺序
2016/01/10 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
JS操作时间 - UNIX时间戳的简单介绍(必看篇)
2017/08/16 Javascript
react配置antd按需加载的使用
2019/02/11 Javascript
解决layui弹出层layer的area过大被遮挡的问题
2019/09/21 Javascript
vue style width a href动态拼接问题的解决
2020/08/07 Javascript
Python2.x中str与unicode相关问题的解决方法
2015/03/30 Python
matplotlib savefig 保存图片大小的实例
2018/05/24 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
详解django+django-celery+celery的整合实战
2019/03/19 Python
python__name__原理及用法详解
2019/11/02 Python
Python argparse模块应用实例解析
2019/11/15 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
Python配置pip国内镜像源的实现
2020/08/20 Python
HTML实现代码雨源码及效果示例
2020/02/25 HTML / CSS
临床医学专业学生的自我评价分享
2013/11/21 职场文书
校园达人秀策划书
2014/01/12 职场文书
少先队学雷锋活动月总结
2014/03/09 职场文书
伊索寓言教学反思
2014/05/01 职场文书
群众路线教育查摆剖析材料
2014/10/10 职场文书
教师聘用意向书
2015/05/11 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
4种非常实用的python内置数据结构
2021/04/28 Python
Springboot/Springcloud项目集成redis进行存取的过程解析
2021/12/04 Redis