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


Posted in Javascript onJanuary 18, 2020

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

描述:

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

效果:

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

代码:

js文件:

/*
* 工厂模式
* */
 
var Method=(function () {
  return {
    loadImage:function (arr,callback) {
      var img=new Image();
      img.arr=arr;
      img.list=[];
      img.num=0;
      img.callback=callback;
//      如果DOM对象下的事件侦听没有被删除掉,将会常驻堆中
//      一旦触发了这个事件需要的条件,就会继续执行事件函数
      img.addEventListener("load",this.loadHandler);
      img.self=this;
      img.src=arr[img.num];
    },
 
    loadHandler:function (e) {
      this.list.push(this.cloneNode(false));
      this.num++;
      if(this.num>this.arr.length-1){
        this.removeEventListener("load",this.self.loadHandler);
        this.callback(this.list);
        return;
      }
      this.src=this.arr[this.num];
    },
 
    $c:function (type,parent,style) {
      var elem=document.createElement(type);
      if(parent) parent.appendChild(elem);
      for(var key in style){
        elem.style[key]=style[key];
      }
      return elem;
    }
  }
})();

html文件:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
  <style>
    #con,#bgImg,#bgImg img
    {
      width: 100%;
      height: 500px;
    }
    #con
    {
      position: relative;
      margin: auto;
    }
    #bgImg{
      position: absolute;
    }
    #bgImg img{
      opacity: 1;
      transition: all 1s;
      position: absolute;
      left:0;
      top:0;
    }
    #iconImg
    {
      position: absolute;
      width: 120px;
      right: 50px;
      top:30px;
    }
    #iconImg img
    {
      margin-top: 8px;
      border: 2px solid #FFA50000;
      transition: all 0.5s;
    }
  </style>
  <script src="js/Method.js"></script>
</head>
<body>
  <div id="con">
    <div id="bgImg">
      <img src="img/a.jpeg">
    </div>
    <div id="iconImg">
      <img src="img/icon_a.jpeg">
      <img src="img/icon_b.jpeg">
      <img src="img/icon_c.jpeg">
      <img src="img/icon_d.jpeg">
      <img src="img/icon_e.jpeg">
    </div>
  </div>
  <script>
    var bgImg,iconImg,prevImg,imgList;//定义大图 小图的盒子(5个img)
    var N=0;//图像标记
    var arr=["img/a.jpeg","img/b.jpeg","img/c.jpeg","img/d.jpeg","img/e.jpeg"];//图片设置为数组形式 传参
    init();
    function init() {
      Method.loadImage(arr,loadFinishHandler)//预加载
    }
    function loadFinishHandler(list) {//预加载赋值
      imgList=list;
      bgImg=document.getElementById("bgImg");
      iconImg=document.getElementById("iconImg");
      for(var i=0;i<iconImg.children.length;i++){
        iconImg.children[i].num=i;
        iconImg.children[i].addEventListener("click",clickHandler);
      }
      changeBorder(iconImg.firstElementChild);
    }
    setInterval(autoImg,3000);
 
    function autoImg() {//自动轮播效果
      N++;  //全局变量 用于控制当前轮播顺序
      if (N>4) N=0;
      changeImg(N);//大图轮播
      changeBorder(iconImg.children[N]);//小图外边框轮播 设置第几个 弄懂参数代表含义
    }
    function clickHandler(e) {
      e =e || window.event;
      changeBorder(this);
      N=this.num;
      changeImg(this.num);
    }
    
    function changeBorder(elem) {
      if(prevImg){
        prevImg.style.border="2px solid #FFA50000";
      }
      prevImg=elem;
      prevImg.style.border="2px solid #FFA500";
    }
 
    function changeImg(index) {
      if(bgImg.children.length>1){
        bgImg.lastElementChild.remove();
      }
      bgImg.lastElementChild.style.opacity="0";
      imgList[index].style.opacity="1";
      bgImg.insertBefore(imgList[index],bgImg.firstElementChild);
    }
  </script>
</body>
</html>

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

Javascript 相关文章推荐
广告代码静态化js通用函数
May 09 Javascript
JS保留两位小数 四舍五入函数的小例子
Nov 20 Javascript
jquery删除提示框弹出是否删除对话框
Jan 07 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
Jan 27 Javascript
js实现鼠标滑过文字链接色彩变化的效果
May 06 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
Nov 02 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
May 18 Javascript
详解Angular4 路由设置相关
Aug 26 Javascript
js实现input密码框显示/隐藏功能
Sep 10 Javascript
小程序的上传文件接口的注意要点解析
Sep 17 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
Nov 12 Javascript
详解如何在Javascript中使用Object.freeze()
Oct 18 Javascript
JS数组方法reverse()用法实例分析
Jan 18 #Javascript
JS实现横向轮播图(初级版)
Jun 24 #Javascript
JS数组方法shift()、unshift()用法实例分析
Jan 18 #Javascript
微信小程序开发中var that =this的用法详解
Jan 18 #Javascript
JavaScript实现滑动门效果
Jan 18 #Javascript
JS数组方法push()、pop()用法实例分析
Jan 18 #Javascript
vue中使用WX-JSSDK的两种方法(推荐)
Jan 18 #Javascript
You might like
深入解析PHP中的(伪)多线程与多进程
2013/07/01 PHP
PHP数据库链接类(PDO+Access)实例分享
2013/12/05 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
2015/04/08 PHP
jquery 学习笔记一
2010/04/07 Javascript
js下写一个事件队列操作函数
2010/07/19 Javascript
通过jquery的$.getJSON做一个跨域ajax请求试验
2011/05/03 Javascript
js实现addClass,removeClass,hasClass的函数代码
2011/07/13 Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
2012/05/23 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
js添加select下默认的option的value和text的方法
2014/10/19 Javascript
Jquery动态添加输入框的方法
2015/05/29 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
2016/05/16 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
NodeJs项目中关闭ESLint的方法
2018/08/09 NodeJs
微信小程序实现上拉加载功能
2019/11/20 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
Javascript如何实现扩充基本类型
2020/08/26 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
Python实现桶排序与快速排序算法结合应用示例
2017/11/22 Python
Python实现嵌套列表去重方法示例
2017/12/28 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
2018/04/06 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
PyQt4实时显示文本内容GUI的示例
2019/06/14 Python
Pycharm+Python+PyQt5使用详解
2019/09/25 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
2020/02/21 Python
flask项目集成swagger的方法
2020/12/09 Python
Pycharm在指定目录下生成文件和删除文件的实现
2020/12/28 Python
浏览器实现移动端高性能css3动画(开启gpu加速)
2013/12/23 HTML / CSS
西班牙三叶草药房:Farmacias Trébol
2019/05/03 全球购物
金融专业推荐信
2013/11/14 职场文书
舞蹈教师自荐信
2014/01/27 职场文书
人力资源管理专业自荐信
2014/06/24 职场文书
介绍信格式
2015/01/30 职场文书
2016廉政教育学习心得体会
2016/01/25 职场文书
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js