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实现的淡入淡出二级菜单效果代码
Sep 15 Javascript
基于jQuery实现点击弹出层实例代码
Jan 01 Javascript
深入理解JavaScript函数参数(推荐)
Jul 26 Javascript
jQuery实现自动输入email、时间和域名的方法
Aug 24 Javascript
tablesorter.js表格排序使用方法(支持中文排序)
Feb 10 Javascript
从零学习node.js之mysql数据库的操作(五)
Feb 24 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
Mar 10 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
Feb 28 Javascript
原生JavaScript实现滑动拖动验证的示例代码
Dec 06 Javascript
JS实现简易留言板特效
Dec 23 Javascript
vue中三级导航的菜单权限控制
Mar 31 Vue.js
浅谈Vue的computed计算属性
Mar 21 Vue.js
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
如何修改和添加Apache的默认站点目录
2013/07/05 PHP
PHP实现抓取HTTPS内容
2014/12/01 PHP
php通过记录IP来防止表单重复提交方法分析
2014/12/16 PHP
php如何实现不借助IDE快速定位行数或者方法定义的文件和位置
2017/01/17 PHP
PHP文字转图片功能原理与实现方法分析
2017/08/31 PHP
jquery photoFrame 图片边框美化显示插件
2010/06/28 Javascript
jQuery实现异步获取json数据的2种方式
2014/08/29 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
SyntaxHighlighter 3.0.83使用笔记
2015/01/26 Javascript
Bootstrap中的Panel和Table全面解析
2016/06/13 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
2016/07/27 Javascript
jQuery Masonry瀑布流布局神器使用详解
2017/05/25 jQuery
vue-image-crop基于Vue的移动端图片裁剪组件示例
2018/08/28 Javascript
Vue对象赋值视图不更新问题及解决方法
2019/06/03 Javascript
node.js Promise对象的使用方法实例分析
2019/12/26 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
typescript配置alias的详细步骤
2020/08/12 Javascript
微信小程序自定义支持图片的弹窗
2020/12/21 Javascript
[52:20]DOTA2-DPC中国联赛正赛 SAG vs XGBO3 第一场 3月5日
2021/03/11 DOTA
Python实现115网盘自动下载的方法
2014/09/30 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
详解python 内存优化
2020/08/17 Python
详解Css3新特性应用之过渡与动画
2017/01/10 HTML / CSS
css3 实现元素弧线运动的示例代码
2020/04/24 HTML / CSS
Html5页面上如何禁止手机虚拟键盘弹出
2020/03/19 HTML / CSS
澳大利亚家具商店:Freedom
2020/12/17 全球购物
杭州联环马网络笔试题面试题
2013/08/04 面试题
行政经理的岗位职责
2013/11/23 职场文书
汽车运用工程系毕业生自荐信
2013/12/27 职场文书
优秀毕业生自荐信范文
2014/01/01 职场文书
分层教学实施方案
2014/03/19 职场文书
优秀团员自我评价范文
2014/04/23 职场文书
体育课课后反思
2014/04/24 职场文书
建筑工地大门标语
2014/06/18 职场文书
上课说话检讨书500字
2014/11/01 职场文书
爱心助学感谢信
2015/01/21 职场文书