在项目中,初次接触vue,看了轮播插件vue-swiper等,好多都是左右切换的。个人强迫症比较严重,就要单页切换样式,就手写了一个。

功能:自动轮播,上一页下一页,点击小圆点切换大图。基本轮播要求的都实现了。。

缺点:毕竟不是专业的测试,自测是没有问题的。 当然,欢迎大家测出问题告知一声。

目前踩了两个坑:

  1. 数组里的图片只能放在static中;
  2. setInterval中的this不是只想vue,而是window!)

上代码:随意来一个组件,直接粘贴复制即可(图片自己准备)

html片段

<template>
<div id="firstPage">
<!-- 轮播 -->
<div class="sliderBox" @mouseenter="stopPlay()" @mouseleave="autoPlay()">
<img id="img" :src="url" style="width:100%;">
<div class="leftImg" @click="preImg()"><img src="../assets/left.png" style="width:100%;"></div>
<div class="rightImg" @click="nextImg()"><img src="../assets/right.png" style="width:100%;"></div>
<ul id="sliderUl" class="sliderUl">
<li @click='clickImgLi(0)' :class="{'activeImg':setIndex==3||setIndex==0}" ></li>
<li @click='clickImgLi(1)' :class="{'activeImg':setIndex==1}" ></li>
<li @click='clickImgLi(2)' :class="{'activeImg':setIndex==2}" ></li>
</ul>
</div> <div>测试数据:{{setIndex}}</div>
</div>
</template>

js

<script>
export default {
data () {
return {
setIndex:1,
imgs: ["/static/image/lbt1.jpg","/static/image/lbt2.jpg","/static/image/lbt3.jpg"],
url:"/static/image/lbt1.jpg",
timer:"" }
},
mounted:function(){
this.autoPlay()
},
methods: {
autoPlay(){
var _this =this
_this.timer=setInterval(function(){
if(_this.setIndex ==3){
_this.setIndex=0;
}
_this.url=_this.imgs[_this.setIndex];
_this.setIndex+=1;
},4000)
},
stopPlay(){
var _this =this
clearInterval(_this.timer)
},
nextImg(){
if(this.setIndex ==3){
this.setIndex=0;
}
this.setIndex+=1;
this.url=this.imgs[this.setIndex];
},
preImg(){
if(this.setIndex ==0){
this.setIndex=3;
}
this.url=this.imgs[this.setIndex];
this.setIndex-=1;
},
clickImgLi(thisIndex){
this.setIndex=thisIndex;
this.url=this.imgs[this.setIndex];
} }
} </script>

css

<style scoped>
.sliderBox{width:100%;height:354px;overflow: hidden;position: relative}
.leftImg,.rightImg{width:60px;height:60px;position:absolute;top:120px;}
.leftImg{left:100px;}
.rightImg{right:100px;}
.sliderUl{position: absolute;left: 45%;bottom: 30px;width: 72px;}
.sliderUl li{width: 14px; height: 14px; float: left; margin-right: 10px; background-color: red
/*background-image: url("../assets/lx.png" );opacity: 0.5 */
}
#sliderUl .activeImg{background-color: black } </style>

最新文章

  1. 四则运算之Right-BICEP测试
  2. thinkphp中M()和D()的理解
  3. Jfinal中定时器的初步探索(二)
  4. 第十五章 调试及安全性(In .net4.5) 之 管理程序集
  5. myeclipse2014如何添加源码反编译工具插件
  6. 关于padding
  7. 关于Xmanager使用问题的总结
  8. BotVS开发基础—2.7 指标MA
  9. 【转】maven跳过单元测试-maven.test.skip和skipTests的区别
  10. ubuntu安装后问题
  11. MySql添加远程超级管理员用户
  12. java开发师笔试面试每日12题(2)
  13. js中onload和jQuery中的ready区别
  14. Servlet 教程 各个知识点简单概括
  15. PHP 文件写入和读取(必看篇)
  16. js 三目运算
  17. WGS84投影的WKID说明
  18. CYQ学习主要摘要3
  19. 【c++ primer, 5e】函数匹配
  20. python学习之pypandoc

热门文章

  1. CF449C:Jzzhu and Apples——题解
  2. redux的bindActionCreators
  3. 【简单算法】17.字符串转整数(atoi)
  4. POJ1904:King&#39;s Quest(强连通+思维)
  5. NYOJ 740 DP
  6. 线程池 ------ linux C实现
  7. web开发环境和要求配置
  8. Centos7 安装rabbitmq(转载)
  9. window10下的solr6.1.0入门笔记之---安装部署
  10. Chromedriver 的安装与配置