代码地址:链接
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 })() //自执行函数