<!-- 这个animate.js 必须写到 index.js的上面引入 -->
<script src="js/animate.js"></script>
<!-- 引入我们首页的js文件 -->
<script src="js/index.js"></script>

HTML代码

------------------------------------------------------

<div class="focus fl">
<!-- 左侧按钮 -->
<a href="javascript:;" class="arrow-l">
&lt;
</a>
<!-- 右侧按钮 -->
<a href="javascript:;" class="arrow-r">  </a>
<!-- 核心的滚动区域 -->
<ul>
<li>
<a href="#"><img src="upload/focus.jpg" alt=""></a>
</li>
<li>
<a href="#"><img src="upload/focus1.jpg" alt=""></a>
</li>
<li>
<a href="#"><img src="upload/focus2.jpg" alt=""></a>
</li>
<li>
<a href="#"><img src="upload/focus3.jpg" alt=""></a>
</li>
</ul>
<!-- 小圆点 -->
<ol class="circle">

</ol>
</div>

------------------------------------------------

js代码

----------------------------------------------------------------------

window.addEventListener(‘load’,function(){

//1、获取元素

var arrow-l = document.querySelector(‘.arrow-l’);

var arrow-r = document.querySelector(‘.arrow-r’);

var focus = document.querySelector(‘.focus’);

var focuwidth = focus.offsetWidth;

focus.addEventListener(‘mouseenter’,function(){

  arrow-l.style.display = ‘block’;

  arrow-r.style.display = ‘block’;

});

focus.addEventListener(‘mouseleave’,function(){

  arrow-l.style.display = ‘none’;

  arrow-r.style.display =‘none’;

});

//2、动态生成小圆点

var ul = focus.querySelector(‘ul’);

var ol = focus.querySelector(‘ol’);

for(var i = 0;i<ul.children.length;i++){  //使用for循环,根据banner图片的数量生成li小圆点的数量

  var i = document.createElement(‘li’);

  li.setAttribute(‘index’,i);

  ol.appendChild(li);

//3.在小圆点生成的同时,用排他思想并且绑定点击事件实现颜色填充的切换

  li.addEventListener(‘click’,function(){ //再点击事件里使用for循环的排他思想

  //清除掉所有li里面的current

  for(var i = 0;i<ol.children.length;i++){

    ol.children[i].className = ‘’;

  }

  this.className = ‘current’;

  var index = this.getAttribute(‘index’);  //声明一个变量,存储点击获得的自定义的属性

  //7.当我们点击了小圆点的 li  就要把这个li的索引值给 箭头的num,因为小圆点的li和箭头num都是独立的,只能单独执行自己。

  num= index;  //num是全局变量

  //当我们点击了小圆点,再点击箭头,小圆点也要跟着移动到下一个小雨点,circle是控制小圆点的,所以也要把inde给circle

  circle = index;

  animate(ul, -index*focusWidth); //调用动画函数,传入实参ul,移动的距离是小圆点的索引*图片的宽度(必须是负值);

  })

}

  ol.children[0] = ‘current’;

  //5.cloneNode第一张图片放到最后面

  var first = ul.children[0].cloneNode(true); //因为cloneNode是写在了生成小圆点的下面,所以小圆点不会多一个

  ul.appendCHild(first);

  //4.点击右箭头,图片滚动一张

  var num = 0;

  var circle = 0;  //全局变量  控制小圆点的播放

  arrow_r.addEventListener(‘click’,function(){

    //如果走到最后一张图片,left要快速复原 等于0

    if(num==ul.children.length-1){

      ul.style.left = 0;

      num=0;

    }

    num++;

    animate(ul,-num*focusWidth);

    //6.点击右侧按钮,小圆点一起变化,可以在声明一个变量控制小圆点

    circle++;

    //先清除小圆点的类名current

    //如果circle==4,说明我们走到了克隆的这张图片了,因为图片是5张,小圆点是4个 小圆点的第四个对应图片的第五张

    if(circle==ol.children.length){

      circle = 0; 

    }

    circleChange();

    

  });

  //左侧按钮

  

  arrow_l.addEventListener(‘click’,function(){

    //如果走到最后一张图片,left要快速复原 等于0

    if(num==ul.children.length-1){

      //num=ul.children.length-1;

      ul.style.left =-num*focusWidth+‘px’;

      

    }

    num--;

    animate(ul,-num*focusWidth);

    //6.点击右侧按钮,小圆点一起变化,可以在声明一个变量控制小圆点

    circle--;

    //先清除小圆点的类名current

    //如果circle<0,说明我们走到了第一张图片了,小圆点要改为第四个小圆点

    if(circle<0){

      circle = ol.children.length-1; 

    }

   

    circleChange();

  });

  function circleChange(){

    

   for(var i = 0;i<ol.child.length;i++){

      ol.children[i].className = ‘’;

    }

    //留下当前的小圆点

    ol.children[circle].className = ‘current’;

  }

})

js实现无缝连接轮播图(七)实现左侧按钮的功能的更多相关文章

  1. js实现无缝连接轮播图(二)实现自定义属性,根据banner图片的数量动态生成小圆点

    <!-- 这个animate.js 必须写到 index.js的上面引入 --><script src="js/animate.js"></scrip ...

  2. jQuery与原生js实现banner轮播图

    jQuery与原生js实现banner轮播图: (jq需自己加载)(图片需自己加载) <!DOCTYPE html> <html> <head> <meta ...

  3. 原生JS实现简易轮播图

    原生JS实现简易轮播图(渐变?) 最近做网页总是会用到轮播图,我就把之前写的轮播图单独拿出来吧,如果有...如果真的有人也需要也可以复制去用用啊..哈~.. window.onload = funct ...

  4. JS+css3焦点轮播图PC端

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. js原生实现轮播图效果(面向对象编程)

    面向对象编程js原生实现轮播图效果 1.先看效果图 2.需要实现的功能: 自动轮播 点击左右箭头按钮无缝轮播 点击数字按钮切换图片 分析:如何实现无缝轮播? 在一个固定大小的相框里有一个ul标签,其长 ...

  6. 【原】运动版的轮播图,有左右按钮和单独分页,原生JS版

    运动版的轮播图,有左右按钮和单独分页 这个例子重点在于: 运动框架的复习,要灵活运动回调函数 始终以全局变量iNum来控制oUl的移动目的地,每次有任何动作,都是先判断iNum并改变iNum后去调用运 ...

  7. 自己用原生JS写的轮播图,支持移动端触摸滑动,分页器圆点可以支持mouseover鼠标移入和click点击,高手看了勿喷哈

    自己用原生JavaScript写的轮播图,分页器圆点按钮可支持click点击,也可支持mouseover鼠标悬浮触发,同时支持移动端触摸滑动,有兴趣的友友可以试试哈,菜鸟一枚,高手看了勿喷,请多多指正 ...

  8. 原生js写简单轮播图方式1-从左向右滑动

    轮播图就是让图片每隔几秒自动滑动,达到图片轮流播放的效果.轮播图从效果来说有滑动式的也有渐入式的,滑动式的轮播图就是图片从左向右滑入的效果,渐入式的轮播图就是图片根据透明度渐渐显示的效果,这里说的是实 ...

  9. JS 实现动态轮播图

    JavaScript实现轮播图思路 + html/css + js源码 整个轮播图的效果是通过js代码,操作dom, 拿到html我们需要的元素,控制整个ul的距离浏览器左边的位置,让排好的图片依次出 ...

随机推荐

  1. 国产化之路-麒麟V10操作系统安装.net core 3.1 sdk

    随着芯片国产化,操作系统国产化,软件国产化的声浪越来越高,公司也已经把开发项目国产化提上了日程,最近搞来了台长城的国产化电脑主机,用来搞试验,安装的是麒麟V10的操作系统,国产化折腾之路就此开始,用的 ...

  2. 关于swagger

    转自https://blog.csdn.net/sanyaoxu_2/article/details/80555328 1:认识Swagger Swagger 是一个规范和完整的框架,用于生成.描述. ...

  3. 理解 JAVABEAN EJB POJO

    <Spring实战>第一章:基本理念.各类名称熟语 POJO(Plain Ordinary Java Object)简单的Java对象,实际就是普通JavaBeans,是为了避免和EJB混 ...

  4. PostgreSQL数组类型应用

    在使用 awk 脚本:数组是一大利器:在很多场景是用数组能处理. 在 python 中,数据类型list:相当于array类型. 在 Oracle 中,对 array 不够友好,感觉像是鸡肋.但是在 ...

  5. python安装和首次使用

    安装: 1.安装python环境: 首先打开python官网,下载配置环境:www.python.org 点击上方downloads, 根据系统选择python环境下载 找到 windows x86- ...

  6. 7种jvm垃圾回收器,这次全部搞懂

    前言 之前我们讲解了jvm的组成结构与垃圾回收算法等知识点,今天我们来讲讲jvm最重要的堆内存是如何使用垃圾回收器进行垃圾回收,并且如何使用命令去配置使用这些垃圾回收器. 堆内存详解 上面这个图大家应 ...

  7. Python-如何拆分含有多种分隔符的字符串?

    案例: 把某个字符串依据分隔符拆分,该字符包含不同的多种分隔符,如下 s = '12;;7.osjd;.jshdjdknx+' 其中 ; . + 是分隔符 有哪些解决方案? 方法1:通过str.spl ...

  8. python3 读取写入excel操作-win32com

    前面有写一篇是用xlrd操作excel的,这一篇是使用win32com来进行操作excel,个人推荐使用win32com. 要使用win32com组件,也需要先导入win32com包. # -*- c ...

  9. mysql-5-aggregation

    #2.分组函数 /* 分组函数/聚合函数:传入一组值,经过统计处理,得到一个输出值 sum, avg, max, min, count */ USE myemployees; #简单使用 SELECT ...

  10. Python练习题 048:Project Euler 021:10000以内所有亲和数之和

    本题来自 Project Euler 第21题:https://projecteuler.net/problem=21 ''' Project Euler: Problem 21: Amicable ...