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 02 Javascript
javascript对象之内置对象Math使用方法
Apr 16 Javascript
Javascript写入txt和读取txt文件示例
Feb 12 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
Mar 04 Javascript
JS关闭窗口时产生的事件及用法示例
Aug 20 Javascript
js绘制购物车抛物线动画
Nov 18 Javascript
JS实现搜索框文字可删除功能
Dec 28 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
Jan 03 Javascript
angular2中使用第三方js库的实例
Feb 26 Javascript
vue中添加mp3音频文件的方法
Mar 02 Javascript
微信小程序用户信息encryptedData详解
Aug 24 Javascript
基于Element封装一个表格组件tableList的使用方法
Jun 29 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输出两个数字中间有多少个回文数的方法
2015/03/23 PHP
CentOS下搭建PHP环境与WordPress博客程序的全流程总结
2016/05/07 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
基于jquery的下拉框改变动态添加和删除表格实现代码
2020/09/12 Javascript
密码强度检测效果实现原理与代码
2013/01/04 Javascript
Jquery ajax执行顺序 返回自定义错误信息(实例讲解)
2013/11/06 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
2016/05/16 Javascript
jQuery操作动态生成的内容的方法
2016/05/28 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
2016/06/16 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
详解vue嵌套路由-query传递参数
2017/05/23 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
2017/06/19 Javascript
vue的无缝滚动组件vue-seamless-scroll实例
2017/12/18 Javascript
Angular2实现组件交互的方法分析
2017/12/19 Javascript
vue实现tab切换外加样式切换方法
2018/03/16 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
在layui下对元素进行事件绑定的实例
2019/09/06 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
2020/08/03 Javascript
实例讲解Python设计模式编程之工厂方法模式的使用
2016/03/02 Python
python实现可以断点续传和并发的ftp程序
2016/09/13 Python
Python协程的用法和例子详解
2017/09/09 Python
Python中format()格式输出全解
2019/04/12 Python
pandas DataFrame索引行列的实现
2019/06/04 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
python基于opencv检测程序运行效率
2019/12/28 Python
利用Python脚本实现自动刷网课
2020/02/03 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
使用HTML5在网页中嵌入音频和视频播放的基本方法
2016/02/22 HTML / CSS
药物学专业学生的自我评价
2013/10/27 职场文书
个人合作协议书范本
2014/04/18 职场文书
2014年幼儿园园务工作总结
2014/12/05 职场文书
大明湖导游词
2015/02/03 职场文书
2016大一新生入学教育心得体会
2016/01/23 职场文书
springboot临时文件存储目录配置方式
2021/07/01 Java/Android
iOS 16进一步确认,一共支持16款iPhone
2022/04/28 数码科技