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版)
Nov 19 Javascript
js算法中的排序、数组去重详细概述
Oct 14 Javascript
用JS实现3D球状标签云示例代码
Dec 01 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
Mar 02 Javascript
jQuery中大家不太了解的几个方法
Mar 04 Javascript
JavaScript面向对象程序设计教程
Mar 29 Javascript
jQuery基础的工厂函数以及定时器的经典实例分析
May 20 Javascript
ajax实现动态下拉框示例
Jan 10 Javascript
react.js组件实现拖拽复制和可排序的示例代码
Aug 20 Javascript
vue中使用[provide/inject]实现页面reload的方法
Sep 30 Javascript
jQuery实现滑动星星评分效果(每日分享)
Nov 13 jQuery
基于vue实现简易打地鼠游戏
Aug 21 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函数,php爱好者站推荐
2007/03/19 PHP
PHP JSON格式数据交互实例代码详解
2011/01/13 PHP
php如何获取文件的扩展名
2015/10/28 PHP
Laravel实现ApiToken认证请求
2019/10/14 PHP
Jquery Validation插件防止重复提交表单的解决方法
2010/03/05 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
js获取元素相对窗口位置的实现代码
2014/09/28 Javascript
node+express+jade制作简单网站指南
2014/11/26 Javascript
jQuery根据用户电脑是mac还是pc加载对应样式的方法
2015/06/26 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
2015/08/12 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
php 解压zip压缩包内容到指定目录的实例
2018/01/23 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
js实现微信聊天效果
2020/08/09 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
2021/03/02 Javascript
[07:20]2014DOTA2西雅图国际邀请赛 选手讲解积分赛第二天
2014/07/11 DOTA
[03:58]兄弟们,回来开黑了!DOTA2昔日战友招募宣传视频
2016/07/17 DOTA
python 查找文件夹下所有文件 实现代码
2009/07/01 Python
Python使用htpasswd实现基本认证授权的例子
2014/06/10 Python
Python将一个CSV文件里的数据追加到另一个CSV文件的方法
2018/07/04 Python
Python使用gRPC传输协议教程
2018/10/16 Python
Django中在xadmin中集成DjangoUeditor过程详解
2019/07/24 Python
如何给Python代码进行加密
2020/01/10 Python
Tensorflow 使用pb文件保存(恢复)模型计算图和参数实例详解
2020/02/11 Python
python isinstance函数用法详解
2020/02/13 Python
一些关于python 装饰器的个人理解
2020/08/31 Python
详解WebSocket跨域问题解决
2018/08/06 HTML / CSS
WoolOvers爱尔兰:羊绒、羊毛和棉针织品
2017/01/04 全球购物
建筑行业的大学生自我评价
2013/12/08 职场文书
2014年计生标语
2014/06/23 职场文书
商务专员岗位职责范本
2014/06/29 职场文书
颐和园导游词
2015/01/30 职场文书
歼十出击观后感
2015/06/11 职场文书
检举信的写法
2019/04/10 职场文书
导游词幽默开场白
2019/06/26 职场文书