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中prototype为对象添加属性的误区介绍
Oct 15 Javascript
jquery渐隐渐显的图片幻灯闪烁切换实现方法
Feb 26 Javascript
javascript实现日期按月份加减
May 15 Javascript
基于jQuery实现拖拽图标到回收站并删除功能
Nov 25 Javascript
JQUERY表单暂存功能插件分享
Feb 23 Javascript
JS+HTML5手机开发之滚动和惯性缓动实现方法分析
Jun 12 Javascript
AngularJs expression详解及简单示例
Sep 01 Javascript
Angular2库初探
Mar 01 Javascript
vue2组件实现懒加载浅析
Mar 29 Javascript
ES6中module模块化开发实例浅析
Apr 06 Javascript
前端开发不得不知的10个最佳ES6特性
Aug 30 Javascript
基于vue1和vue2获取dom元素的方法
Mar 17 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
短波问题解答
2021/02/28 无线电
PHP中$_FILES的使用方法及注意事项说明
2014/02/14 PHP
php命名空间学习详解
2014/02/27 PHP
PHP获取服务器端信息的方法
2014/11/28 PHP
php设计模式之策略模式应用案例详解
2019/06/17 PHP
理解JavaScript的caller,callee,call,apply
2009/04/28 Javascript
javascript showModalDialog,open取得父窗口的方法
2010/03/10 Javascript
浅析JavaScript中的同名标识符优先级
2013/12/06 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
js防止DIV布局滚动时闪动的解决方法
2014/10/30 Javascript
jquery实现横向图片轮播特效代码分享
2015/11/19 Javascript
使用node.js对音视频文件加密的实例代码
2017/08/30 Javascript
详解vue中引入stylus及报错解决方法
2017/09/22 Javascript
js通过Date对象实现倒计时动画效果
2017/10/27 Javascript
微信小程序 功能函数小结(手机号验证*、密码验证*、获取验证码*)
2017/12/08 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
2018/03/01 Javascript
node前端开发模板引擎Jade的入门
2018/05/11 Javascript
JavaScript设计模式之装饰者模式定义与应用示例
2018/07/25 Javascript
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
[10:28]2018DOTA2国际邀请赛寻真——VGJ.S寻梦之路
2018/08/15 DOTA
Python os模块介绍
2014/11/30 Python
python实现TCP服务器端与客户端的方法详解
2015/04/30 Python
Python实现判断一个字符串是否包含子串的方法总结
2017/11/21 Python
Python引用计数操作示例
2018/08/23 Python
python 怎样将dataframe中的字符串日期转化为日期的方法
2019/09/26 Python
基于Django统计博客文章阅读量
2019/10/29 Python
Python算法中的时间复杂度问题
2019/11/19 Python
音频处理 windows10下python三方库librosa安装教程
2020/06/20 Python
让你相见恨晚的十个Python骚操作
2020/11/18 Python
TripAdvisor台湾:全球最大旅游网站
2018/08/26 全球购物
加拿大拼图大师:Puzzle Master
2020/12/28 全球购物
先进党支部事迹材料
2014/01/13 职场文书
机关干部个人对照检查材料思想汇报
2014/09/28 职场文书
永不妥协观后感
2015/06/10 职场文书
《云雀的心愿》教学反思
2016/02/23 职场文书
js基于div丝滑实现贝塞尔曲线
2022/09/23 Javascript