js轮播图(学习笔记)

Posted 做个机灵鬼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js轮播图(学习笔记)相关的知识,希望对你有一定的参考价值。

window.addEventListener('load',function()
   
   var arrowl = document.querySelector('.arrow-l');
   var arrowr = document.querySelector('.arrow-r');
   var focus = document.querySelector('.focus');
   //鼠标经过图片的时候 把左右键显示出来
   focus.addEventListener('mouseenter',function()
       arrowl.style.display = 'block';
       arrowr.style.display = 'block';
       //鼠标经过的时候 停止自动播放
       clearInterval(timer);
       timer = null;
   )
   //鼠标离开的时候 隐藏起来
   focus.addEventListener('mouseleave',function()
    arrowl.style.display = 'none';
    arrowr.style.display = 'none';
    //鼠标离开了又自动播放
    timer = setInterval(function()
        //手动调用点击事件
        arrowr.click();
    ,2000)
   )
   //利用动态变量添加小圆点
   var ol = document.querySelector('.circle');
   var ulImg = document.querySelector('.ulImg'); 
   for(var i = 0 ; i < ulImg.children.length; i++)
       var li = document.createElement('li');
         //自定义属性 获取小圆点的索引
         var index = li.setAttribute('index',i);
         ol.appendChild(li);
        

         //获取图片的宽度 等于盒子的宽度
         var imgOffWidth = focus.offsetWidth;
      
         //利用排他思想 点击小圆点时 小圆点背景颜色切换到当前圆点
        li.addEventListener('click',function()
            if(true) 
                for(var j = 0; j< ol.children.length; j++)
                    //去除其他小圆点背景
                    ol.children[j].className = '';
                
                //获取当前点击小圆的背景
                this.className = 'current';
                //点击小圆点切换图片,移动的距离等于当前圆点的索引乘于图片的宽度
                index = this.getAttribute('index');
                //把当前点击的圆点索引给num;
                num = index;
                circle = index;
               antimer(ulImg,-index * imgOffWidth)
            
            for(var j = 0; j< ol.children.length; j++)
                //去除其他小圆点背景
                ol.children[j].className = '';
            
            //获取当前点击小圆的背景
            this.className = 'current';
            //点击小圆点切换图片,移动的距离等于当前圆点的索引乘于图片的宽度
            index = this.getAttribute('index');
            //把当前点击的圆点索引给num;
            num = index;
            circle = index;
           antimer(ulImg,-index * imgOffWidth)
        )
   
   //刷新时默认选中第一张图片
   ol.children[0].className = 'current';
   //深克隆第一张图片 放在最后的位置
   var first = ulImg.children[0].cloneNode(true);
   ulImg.appendChild(first);
   var num = 0;//记录图片的索引
   var circle = 0;//记录小圆点的索引
   //设置节流阀
   var flag = true;
  //设置右键点击事件
  arrowr.addEventListener('click',function()
      if(flag)
        flag = false;
        if(num === ulImg.children.length - 1) 
            ulImg.style.left = 0;
            num = 0;
        
        num++;
        antimer(ulImg,-num * imgOffWidth,function()
            flag = true;
        );
        //小圆点跟随图片
        circle++;
        if(circle > ol.children.length-1) 
            circle = 0;
        
       current();
      
     
  )
   //左键点击事件
   arrowl.addEventListener('click',function()
       if(flag) 
           flag = false;
        if(num === 0) 
            num = ulImg.children.length - 1;
            ulImg.style.left = -num * imgOffWidth + 'px';
          
        
        num--;
        antimer(ulImg,-num * imgOffWidth,function()
            flag = true;
        );
         //小圆点跟随图片
        circle--;
        if(circle < 0) 
            circle = ol.children.length -1;
        
        current();
       
   
)
  //封装一个函数
  function current() 
    for(var i = 0; i<ol.children.length; i++)
        ol.children[i].className = '';
    
    ol.children[circle].className = 'current'; 
  
  //添加一个定时器 自动滚动
  var timer = setInterval(function()
      //手动调用点击事件
      arrowr.click();
  ,2000)
)

以上是关于js轮播图(学习笔记)的主要内容,如果未能解决你的问题,请参考以下文章

2017-05-17 js动态生成轮播图小圆点

用原生JS 写Web首页轮播图

原生js简单轮播图 代码

js学习总结----轮播图的插件化封装

uniapp外包杯学习笔记day07 | 微信小程序轮播图分类导航楼层图的开发与实现

js学习总结----轮播图之渐隐渐现版