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 相关文章推荐
JS中style属性
Oct 11 Javascript
网页前台通过js非法字符过滤代码(骂人的话等等)
May 26 Javascript
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
Jun 17 Javascript
jquery选择器之属性过滤选择器详解
Jan 27 Javascript
JavaScript之Object类型介绍
Apr 01 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
Oct 01 Javascript
JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
Sep 23 jQuery
简单的三步vuex入门
May 20 Javascript
JS实现区分中英文并统计字符个数的方法示例
Jun 09 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
Aug 14 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
Oct 02 Javascript
JS实现点击掉落特效
Jan 29 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
rephactor 优秀的PHP的重构工具
2011/06/09 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
2014/05/19 PHP
php轻松实现中英文混排字符串截取
2014/05/28 PHP
实现png图片和png背景透明(支持多浏览器)的方法
2009/09/08 Javascript
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
Jquery左右滑动插件之实现超级炫酷动画效果附源码下载
2015/12/02 Javascript
全面解析JavaScript中apply和call以及bind(推荐)
2016/06/15 Javascript
AngularJS实现在ng-Options加上index的解决方法
2016/11/03 Javascript
bootstrap modal弹出框的垂直居中
2016/12/14 Javascript
hovertree插件实现二级树形菜单(简单实用)
2016/12/28 Javascript
jquery实现下拉框左右选择功能
2017/02/21 Javascript
详解Vue2.0 事件派发与接收
2017/09/05 Javascript
js封装成插件_Canvas统计图插件编写实例
2017/09/12 Javascript
基于vue2.0实现简单轮播图
2017/11/27 Javascript
Dropify.js图片宽高自适应的方法
2017/11/27 Javascript
django基础之数据库操作方法(详解)
2017/05/24 Python
浅谈对yield的初步理解
2017/05/29 Python
Python unittest工作原理和使用过程解析
2020/02/24 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
2020/05/28 Python
python 读txt文件,按‘,’分割每行数据操作
2020/07/05 Python
css3实现wifi信号逐渐增强效果实例
2017/08/09 HTML / CSS
css3中less实现文字长阴影(long shadow)
2020/04/24 HTML / CSS
HTML5拖放功能_动力节点Java学院整理
2017/07/13 HTML / CSS
美国演唱会和体育门票购买网站:Ticketnetwork
2018/10/19 全球购物
如何判断一段程序是由C 编译程序还是由C++编译程序编译的
2013/08/04 面试题
网络技术支持面试题
2013/04/22 面试题
机电工程学生自荐信范文
2013/12/07 职场文书
领导的自我鉴定
2013/12/28 职场文书
法律顾问服务方案
2014/05/15 职场文书
养成教育经验材料
2014/05/26 职场文书
家庭暴力离婚起诉书
2015/05/18 职场文书
爱国主义教育主题班会
2015/08/13 职场文书
爱护公物主题班会
2015/08/17 职场文书
2019年“红色之旅”心得体会1000字(3篇)
2019/09/27 职场文书
详解Oracle数据库中自带的所有表结构(sql代码)
2021/11/20 Oracle