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 相关文章推荐
使用jQuery将多条数据插入模态框的实现代码
Oct 08 Javascript
jQuery 遍历函数详解
Jul 05 Javascript
jQuery插件datalist实现很好看的input下拉列表
Jul 14 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
Sep 26 Javascript
jQuery DataTables插件自定义Ajax分页实例解析
Apr 28 Javascript
微信小程序中使元素占满整个屏幕高度实现方法
Dec 14 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
Jan 03 Javascript
jQuery中可见性过滤器简单用法示例
Mar 31 jQuery
关于vue中的ajax请求和axios包问题
Apr 19 Javascript
React注册倒计时功能的实现
Sep 06 Javascript
vue使用混入定义全局变量、函数、筛选器的实例代码
Jul 29 Javascript
JavaScript实现alert弹框效果
Nov 19 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
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
PHP实现的封装验证码类详解
2013/06/18 PHP
微信自定义菜单的处理开发示例
2015/04/16 PHP
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
PHP读取CSV大文件导入数据库的实例
2017/07/24 PHP
myFocus slide3D v1.1.0 使用方法与下载
2011/01/12 Javascript
JQuery datepicker 使用方法
2011/05/20 Javascript
Js判断CSS文件加载完毕的具体实现
2014/01/17 Javascript
浅谈FastClick 填坑及源码解析
2018/03/02 Javascript
angular2实现统一的http请求头方法
2018/08/13 Javascript
Vue组件之单向数据流的解决方法
2018/11/10 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
python采用requests库模拟登录和抓取数据的简单示例
2014/07/05 Python
Python中使用装饰器时需要注意的一些问题
2015/05/11 Python
Python实现的随机森林算法与简单总结
2018/01/30 Python
Python中协程用法代码详解
2018/02/10 Python
python3+PyQt5+Qt Designer实现扩展对话框
2018/04/20 Python
Go/Python/Erlang编程语言对比分析及示例代码
2018/04/23 Python
python smtplib模块自动收发邮件功能(一)
2018/05/22 Python
Python基本数据结构与用法详解【列表、元组、集合、字典】
2019/03/23 Python
python虚拟环境的安装和配置(virtualenv,virtualenvwrapper)
2019/08/09 Python
基于Tensorflow一维卷积用法详解
2020/05/22 Python
Css3+Js制作漂亮时钟(附源码)
2013/04/24 HTML / CSS
英国领先的高级美容和在线皮肤诊所:Face the Future
2020/06/17 全球购物
为什么要用EJB
2014/04/17 面试题
党员批评与自我批评
2014/02/12 职场文书
职务聘任书范文
2014/03/29 职场文书
公民授权委托书
2014/10/15 职场文书
2014年教研组工作总结
2014/11/26 职场文书
水电工程师岗位职责
2015/02/13 职场文书
社区国庆节活动总结
2015/03/23 职场文书
2015年初中教务处工作总结
2015/07/21 职场文书
入党申请书格式
2019/06/20 职场文书