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 相关文章推荐
Javascript条件判断使用小技巧总结
Sep 08 Javascript
基于jquery的无缝循环新闻列表插件
Mar 07 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
Apr 08 Javascript
javascript笔记 String类replace函数的一些事
Sep 22 Javascript
node.js中的fs.realpathSync方法使用说明
Dec 16 Javascript
jQuery实现的输入框选择时间插件用法实例
Feb 28 Javascript
Node.js实现兼容IE789的文件上传进度条
Sep 02 Javascript
基于jQuery实现火焰灯效果导航菜单
Jan 04 Javascript
ajax的分页查询示例(不刷新页面)
Jan 11 Javascript
node+vue实现用户注册和头像上传的实例代码
Jul 20 Javascript
angularJS开发注意事项
May 26 Javascript
vue router的基本使用和配置教程
Nov 05 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常用技巧总结(附函数代码)
2012/02/04 PHP
PHP curl 并发最佳实践代码分享
2012/09/05 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
javascript动画效果类封装代码
2007/08/28 Javascript
jQuery 顺便学习下CSS选择器 奇偶匹配nth-child(even)
2010/05/24 Javascript
Javascript玩转继承(三)
2014/05/08 Javascript
jQuery实现的一个tab切换效果内部还嵌有切换
2014/08/10 Javascript
js判断是否按下了Shift键的方法
2015/01/27 Javascript
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
基于javascript实现tab切换特效
2016/03/29 Javascript
IONIC自定义subheader的最佳解决方案
2016/09/22 Javascript
如何利用JQuery实现从底部回到顶部的功能
2016/12/27 Javascript
Javascript中构造函数要注意的一些坑
2017/01/23 Javascript
微信小程序 商城开发(ecshop )简单实例
2017/04/07 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
2017/11/10 Javascript
VUE2 前端实现 静态二级省市联动选择select的示例
2018/02/09 Javascript
解决vue中使用swiper插件问题及swiper在vue中的用法
2018/04/04 Javascript
vue.js与后台数据交互的实例讲解
2018/08/08 Javascript
ElementUI之Message功能拓展详解
2019/10/18 Javascript
解决vue路由name同名,路由重复的问题
2020/08/05 Javascript
python采集百度百科的方法
2015/06/05 Python
深入学习Python中的装饰器使用
2016/06/20 Python
用python与文件进行交互的方法
2018/03/01 Python
Python os.rename() 重命名目录和文件的示例
2018/10/25 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
通过代码实例了解Python异常本质
2020/09/16 Python
django项目中使用云片网发送短信验证码的实现
2021/01/19 Python
Under Armour安德玛英国官网:美国高端运动科技品牌
2018/09/17 全球购物
美国精品地毯网站:Boutique Rugs
2020/03/04 全球购物
小学生国旗下演讲稿
2014/04/25 职场文书
教师竞聘演讲稿
2014/05/16 职场文书
毕业实习证明(4篇)
2014/10/28 职场文书
2014年政协工作总结
2014/12/09 职场文书
试用期工作表现自我评价
2015/03/06 职场文书
综合素质评价个性发展自我评价
2015/03/06 职场文书
「偶像大师 MILLION LIVE!」七尾百合子手办开订
2022/03/21 日漫