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 设计模式之单体模式 面向对象学习基础
Apr 18 Javascript
预加载css或javascript的js代码
Apr 23 Javascript
cnblogs TagCloud基于jquery的实现代码
Jun 11 Javascript
JQuery浮动DIV提示信息并自动隐藏的代码
Aug 29 Javascript
jquery和javascript的区别(常用方法比较)
Jul 04 Javascript
js图片延迟加载的实现方法及思路
Jul 22 Javascript
JS实现日期加减的方法
Nov 29 Javascript
node.js中的path.extname方法使用说明
Dec 09 Javascript
基于JavaScript创建动态Dom
Dec 08 Javascript
javascript实现简单的全选和反选功能
Jan 05 Javascript
Vue.js第三天学习笔记(计算属性computed)
Dec 01 Javascript
JS的函数调用栈stack size的计算方法
Jun 24 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中判断文件存在是用file_exists还是is_file的整理
2012/09/12 PHP
深入密码加salt原理的分析
2013/06/06 PHP
php实现图片缩放功能类
2013/12/18 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
javascript之锁定表格栏位
2007/06/29 Javascript
IE6/7/8/9不支持exec的简写方式
2011/05/25 Javascript
js获取网页高度(详细整理)
2012/12/28 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
JS中Json数据的处理和解析JSON数据的方法详解
2016/06/29 Javascript
Bootstrap中data-target 到底是什么
2017/02/14 Javascript
angular $watch 一个变量的变化(实例讲解)
2017/08/02 Javascript
使用JS中的Replace()方法遇到的问题小结
2017/10/20 Javascript
vue中使用localstorage来存储页面信息
2017/11/04 Javascript
Vue.js搭建移动端购物车界面
2020/06/28 Javascript
nodejs+express搭建多人聊天室步骤
2018/02/12 NodeJs
在vue中使用Autoprefixed的方法
2018/07/27 Javascript
vue动态子组件的两种实现方式
2019/09/01 Javascript
微信小程序如何播放腾讯视频的实现
2019/09/20 Javascript
JS实现纵向轮播图(初级版)
2020/01/18 Javascript
Vue3项目打包后部署到服务器 请求不到后台接口解决方法
2020/02/06 Javascript
vue实现div单选多选功能
2020/07/16 Javascript
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
Python实现二分查找与bisect模块详解
2017/01/13 Python
Python cookbook(数据结构与算法)实现对不原生支持比较操作的对象排序算法示例
2018/03/15 Python
Python3中lambda表达式与函数式编程讲解
2019/01/14 Python
Pytorch实现基于CharRNN的文本分类与生成示例
2020/01/08 Python
python 星号(*)的多种用途
2020/09/21 Python
快时尚眼镜品牌,全国连锁眼镜店:LOHO眼镜生活
2018/10/08 全球购物
销售业务实习自我鉴定
2013/09/23 职场文书
人事部主管岗位职责
2013/12/26 职场文书
爱国主义教育演讲稿
2014/08/26 职场文书
旷课检讨书范文
2015/01/27 职场文书
2015年国庆节慰问信
2015/03/23 职场文书
企业版Windows 11有哪些新功能? Win11适用于企业的功能介绍
2021/11/21 数码科技
Nginx禁止ip访问或非法域名访问
2022/04/07 Servers