轮播图插件

代码地址:链接

html代码

1     <div class="focus" id="focus">
2         <ul class="focuspic" id="slidePic">
3             <li><a href="#" target="_blank"><img src="../images/banner1.png"/></a></li>
4             <li><a href="#" target="_blank"><img src="../images/banner2.png" /></a></li>
5             <li><a href="#" target="_blank"><img src="../images/banner3.png" /></a></li>
6         </ul>
7     </div>

调用js

1 window.onload=function () {
2           //轮播图调用
3         autoSlide.init({
4             "slideLi":document.getElementById("slidePic").children
5         }); //只是调用Init方法
6 }

js代码

  1 (function () {
  2     function autoSlide() {}
  3     
  4     autoSlide.prototype.init = function (initParam) {
  5         //都在这里初始化
  6         this.dsq=null;
  7         //判断是手机还是电脑打开,选择初始化
  8         if(!this.isPhone()){
  9             this.phoneSlide(initParam); //initParam是形参
 10         }else{
 11             this.computerSlide(initParam);
 12         }
 13     }
 14     autoSlide.prototype.computerSlide=function (param) {//电脑端初始化
 15         var _this = this;//区分作用域
 16         var divEle = document.createElement("div");//创建一个图片列表box
 17         divEle.className = "slide-box";
 18         var divFocus = document.createElement("div"); //创建一个图片焦点
 19         divFocus.className = "slide-focus";
 20         for(var i=0;i<param.slideLi.length;i++){
 21             var slideItem = document.createElement("div");//创建图片项目
 22             var focusItem = document.createElement("span");
 23             focusItem.setAttribute("data-index",i);
 24             if(i == 0){
 25                 slideItem.className = "active";
 26                 focusItem.className = "on";
 27             }
 28             //注意不要使用mousemove,会导致重复调用
 29             focusItem.onmousemove = function () {
 30                 if(this.className.indexOf("on") < 0){
 31                     document.getElementsByClassName("on")[0].className = "";//清除之前的标记
 32                     this.className = "on";//设置当前的状态
 33                     divEle.getElementsByClassName("active")[0].className = "";//清除
 34                     divEle.children[this.getAttribute("data-index")].className = "active";//设置当前的标记
 35                 }
 36             }
 37 
 38             //querySelectorAll获取出来的是一个数组,所以要选择第几个
 39             slideItem.style.backgroundImage = "url('"+param.slideLi[i].querySelectorAll("img")[0].getAttribute("src")+"')"; //这里也需要像css一样,写url();
 40             divEle.appendChild(slideItem);//存储到图片列表box
 41             divFocus.appendChild(focusItem);//存储span元素到图片焦点box
 42         }
 43 
 44         document.getElementById("slidePic").remove();
 45         var focus = document.getElementById("focus");
 46         focus.onmousemove = function(){
 47             clearTimeout(_this.dsq);
 48         }
 49         focus.onmouseout = function(){
 50             _this.computerAuto();
 51         }
 52         focus.appendChild(divEle);
 53         focus.appendChild(divFocus);
 54         this.computerAuto();
 55     }
 56 
 57     autoSlide.prototype.computerAuto=function () { //自动播放
 58         /*
 59          1、获取当前是第几个
 60          2、获取总共有多少个
 61          3、匹配如果当前是最后一个,那么下一个就是第一个
 62          4、调用定时器自动执行(setInterval有Bug,长期调用,可能会导致越来越快)
 63          */
 64         var _this = this;
 65         this.dsq = setTimeout(function () {
 66             var slideBox = document.getElementsByClassName("slide-box")[0].children;
 67             var slideFocus = document.getElementsByClassName("slide-focus")[0].children;
 68             var currFocus = Number(document.getElementsByClassName("slide-focus")[0].getElementsByClassName("on")[0].getAttribute("data-index"));
 69             slideBox[currFocus].className = "";
 70             slideFocus[currFocus].className = "";
 71             if((slideBox.length-1) <= currFocus){
 72                 slideBox[0].className = "active";
 73                 slideFocus[0].className = "on";
 74             }else{
 75                 slideBox[currFocus+1].className = "active";
 76                 slideFocus[currFocus+1].className = "on";
 77             }
 78             _this.computerAuto();
 79         },3000)
 80     }
 81     autoSlide.prototype.phoneSlide=function () {//手机端初始化
 82 
 83     }
 84     autoSlide.prototype.isPhone = function () {
 85         var userAgentInfo = navigator.userAgent //查看浏览器用于 HTTP 请求的用户代理头的值
 86         var agents = ["Android", "iPhone",
 87                      "SymbianOS", "Windows Phone",
 88                      "iPad", "iPod"];//系统名字
 89         var flag = true;
 90         for(var i=0;i<agents.length;i++){
 91             if(userAgentInfo.indexOf(agents[i]) > 0){
 92                 flag = false; //判断是否包含,修改flag状态
 93                 break;//结束for循环判断
 94             }
 95         }
 96        return flag
 97     }
 98 
 99     var autoSlides = new autoSlide();
100 
101     window["autoSlide"] = autoSlides;
102 })()  //自执行函数

 

posted @ 2017-03-13 16:22  zhaobao1830  阅读(313)  评论(0)    收藏  举报