JS实现纵向轮播图(初级版)

前端之家收集整理的这篇文章主要介绍了JS实现纵向轮播图(初级版)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

本文实例为大家分享了JS实现纵向轮播图的具体代码,供大家参考,具体内容如下

描述:

纵向buton或者底部数字控制轮播,可以实现自动轮播(注释了,使用的话将其注释消掉),核心知识是数据驱动图像的透明度达到效果

效果

JS实现纵向轮播图(初级版)


代码

js文件

  1. /*
  2. * 工厂模式
  3. * */
  4.  
  5. var Method=(function () {
  6. return {
  7. loadImage:function (arr,callback) {
  8. var img=new Image();
  9. img.arr=arr;
  10. img.list=[];
  11. img.num=0;
  12. img.callback=callback;
  13. // 如果DOM对象下的事件侦听没有被删除掉,将会常驻堆中
  14. // 一旦触发了这个事件需要的条件,就会继续执行事件函数
  15. img.addEventListener("load",this.loadHandler);
  16. img.self=this;
  17. img.src=arr[img.num];
  18. },loadHandler:function (e) {
  19. this.list.push(this.cloneNode(false));
  20. this.num++;
  21. if(this.num>this.arr.length-1){
  22. this.removeEventListener("load",this.self.loadHandler);
  23. this.callback(this.list);
  24. return;
  25. }
  26. this.src=this.arr[this.num];
  27. },$c:function (type,parent,style) {
  28. var elem=document.createElement(type);
  29. if(parent) parent.appendChild(elem);
  30. for(var key in style){
  31. elem.style[key]=style[key];
  32. }
  33. return elem;
  34. }
  35. }
  36. })();

html文件

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <Meta charset="UTF-8">
  5. <title>Title</title>
  6. <style>
  7. #con,#bgImg,#bgImg img
  8. {
  9. width: 100%;
  10. height: 500px;
  11. }
  12. #con
  13. {
  14. position: relative;
  15. margin: auto;
  16. }
  17. #bgImg{
  18. position: absolute;
  19. }
  20. #bgImg img{
  21. opacity: 1;
  22. transition: all 1s;
  23. position: absolute;
  24. left:0;
  25. top:0;
  26. }
  27. #iconImg
  28. {
  29. position: absolute;
  30. width: 120px;
  31. right: 50px;
  32. top:30px;
  33. }
  34. #iconImg img
  35. {
  36. margin-top: 8px;
  37. border: 2px solid #FFA50000;
  38. transition: all 0.5s;
  39. }
  40. </style>
  41. <script src="js/Method.js"></script>
  42. </head>
  43. <body>
  44. <div id="con">
  45. <div id="bgImg">
  46. <img src="img/a.jpeg">
  47. </div>
  48. <div id="iconImg">
  49. <img src="img/icon_a.jpeg">
  50. <img src="img/icon_b.jpeg">
  51. <img src="img/icon_c.jpeg">
  52. <img src="img/icon_d.jpeg">
  53. <img src="img/icon_e.jpeg">
  54. </div>
  55. </div>
  56. <script>
  57. var bgImg,iconImg,prevImg,imgList;//定义大图 小图的盒子(5个img)
  58. var N=0;//图像标记
  59. var arr=["img/a.jpeg","img/b.jpeg","img/c.jpeg","img/d.jpeg","img/e.jpeg"];//图片设置为数组形式 传参
  60. init();
  61. function init() {
  62. Method.loadImage(arr,loadFinishHandler)//预加载
  63. }
  64. function loadFinishHandler(list) {//预加载赋值
  65. imgList=list;
  66. bgImg=document.getElementById("bgImg");
  67. iconImg=document.getElementById("iconImg");
  68. for(var i=0;i<iconImg.children.length;i++){
  69. iconImg.children[i].num=i;
  70. iconImg.children[i].addEventListener("click",clickHandler);
  71. }
  72. changeBorder(iconImg.firstElementChild);
  73. }
  74. setInterval(autoImg,3000);
  75.  
  76. function autoImg() {//自动轮播效果
  77. N++; //全局变量 用于控制当前轮播顺序
  78. if (N>4) N=0;
  79. changeImg(N);//大图轮播
  80. changeBorder(iconImg.children[N]);//小图外边框轮播 设置第几个 弄懂参数代表含义
  81. }
  82. function clickHandler(e) {
  83. e =e || window.event;
  84. changeBorder(this);
  85. N=this.num;
  86. changeImg(this.num);
  87. }
  88.  
  89. function changeBorder(elem) {
  90. if(prevImg){
  91. prevImg.style.border="2px solid #FFA50000";
  92. }
  93. prevImg=elem;
  94. prevImg.style.border="2px solid #FFA500";
  95. }
  96.  
  97. function changeImg(index) {
  98. if(bgImg.children.length>1){
  99. bgImg.lastElementChild.remove();
  100. }
  101. bgImg.lastElementChild.style.opacity="0";
  102. imgList[index].style.opacity="1";
  103. bgImg.insertBefore(imgList[index],bgImg.firstElementChild);
  104. }
  105. </script>
  106. </body>
  107. </html>

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

猜你在找的JavaScript相关文章