当前位置:   article > 正文

Vue之图片轮播_vue图片轮播

vue图片轮播

                                         Vue之图片轮播

今天来看看vue怎么实现图片轮播,个人实现方式,如果你有更好的实现方式,欢迎来沟通,嘿嘿。

效果图:

由于没有素材就随便找了123456来代替选中的圆点。

实现思路:

首先绑定数据源,循环出每个图片,在通过isShow字段来判断是否显示图片。在图片元素写这两个 v-bind:src="item.src" v-show="item.isShow" 一个src用来显示图片,show用来判断图片是否显示。

再为123456下面这个导航添加点击事件,通过点击的元素来设置该数据显示出图片,同时其他图片隐藏。

然后在vue created方法调用开始循环事件,来实现图片轮播。并用一个属性记录起来,方便后面停止循环。

开启轮播后,判断当前显示的图片是否是最后一张如果是就从1开始,如果不是则下标加+1去显示下一张图片。

全部代码:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>vue轮播图</title>
  6. </head>
  7. <script src="vue.min.js"></script>
  8. <script src="clipboard.min.js"></script>
  9. <link rel="stylesheet" type="text/css" href="bootstrap.min.css"/>
  10. <style type="text/css">
  11. #test{text-align: center;margin:0 auto;}
  12. .baner{}
  13. .baner img{width:700px;height: 500px;}
  14. .num{margin-top: 20px}
  15. .num a{color: black;}
  16. .num a span{ margin-left: 30px;font-size: 20px; text-decoration:none;}
  17. /*.num a:hover{color: red;}*/
  18. .isSelect {color: red;}
  19. </style>
  20. <body>
  21. <div id="test">
  22. <h1>vue轮播图</h1>
  23. <div class="baner">
  24. <div class="banerimg" v-for="item in dataList">
  25. <img v-bind:src="item.src" v-show="item.isShow">
  26. </div>
  27. <div class="num" @mouseover="focusImg()" @mouseout="startInterval">
  28. <a href="javascript:void(0)" v-for="item in dataList" @click="changeImg(item.seq)">
  29. <span :class={'isSelect':item.isShow}>{{item.seq}}</span>
  30. </a>
  31. </div>
  32. </div>
  33. </div>
  34. </body>
  35. <script >
  36. new Vue({
  37. el : "#test",
  38. data: {
  39. interval:'',
  40. dataList:[
  41. {name:'1',src:'banerSroll1.jpg',isShow:true,seq:1},
  42. {name:'2',src:'banerSroll2.jpg',isShow:false,seq:2},
  43. {name:'3',src:'banerSroll3.jpg',isShow:false,seq:3},
  44. {name:'4',src:'banerSroll4.jpg',isShow:false,seq:4},
  45. {name:'5',src:'banerSroll5.jpg',isShow:false,seq:5},
  46. {name:'6',src:'banerSroll6.jpg',isShow:false,seq:6},
  47. ],
  48. },
  49. created:function(){
  50. this.startInterval();
  51. },
  52. methods:{
  53. changeImg :function(seq){
  54. var newData = this.dataList;
  55. for (var i = 0;i <newData.length; i++) {
  56. if(newData[i].seq==seq)
  57. newData[i].isShow=true;
  58. else
  59. newData[i].isShow=false;
  60. }
  61. this.dataList = newData;
  62. },
  63. startInterval:function(){
  64. let that = this;
  65. this.interval = setInterval(function(){
  66. that.scollImg();
  67. },1000)
  68. },
  69. scollImg:function(){
  70. var newData = this.dataList.filter(function(val){return val.isShow})[0];
  71. if(newData.seq==this.dataList.length){
  72. this.changeImg(1);
  73. }else{
  74. this.changeImg(newData.seq+1);
  75. }
  76. },
  77. focusImg :function(){
  78. clearInterval(this.interval);
  79. }
  80. },
  81. computed :function(){
  82. }
  83. })
  84. </script>
  85. </html>

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/251142
推荐阅读
相关标签
  

闽ICP备14008679号