// 自执行(匿名)函数 (function () { // 默认参数 var defaultOption = { time: 3, imgClick: function () { } }; var DomEle = { main: null, Dot: null, Pic: null, Action: null, LeftAction: null, RightAction: null, ImgWidth: 0, AutoPlay: null, }; function swiper (Option) { if (Option.hasOwnProperty("el") && document.querySelector(Option.el) !== null) { if (Option.hasOwnProperty("data") && Option.data.length !== 0) { // 可选参数的合并 Object.assign(defaultOption, Option) this.init() } else { console.error(`data未传,或是data数组为空,请检查`) } } else { console.error(`el未传,或是类名${Option.el}不存在,请检查`) } } swiper.prototype = { init: function () { console.log("检查工作已经结束,开始绘制轮播图") // 创建dom,追加到网页上 this.CreatedMain(); this.CreatedPic(); this.CreatedYd(); document.querySelector(defaultOption.el).appendChild(DomEle.main); if (defaultOption.isAction) { this.CreatedAction() this.BindRightClick(); this.BindLeftClick(); } this.BindClickYdLi(); this.BindOnmouseover(); this.BindOnmouseout(); this.Auto(); }, /** * 绑定左边按钮的点击事件 * @constructor */ BindLeftClick() { DomEle.LeftAction.onclick = () => this.change(DomEle.ImgWidth) }, /** * 绑定右边按钮的点击事件 * @constructor */ BindRightClick: function () { // var dd = this; DomEle.RightAction.onclick = () => this.change(-DomEle.ImgWidth) }, BindClickYdLi() { var self = this; DomEle.Dot.childNodes.forEach(function (v,ix){ v.onclick = function () { self.ClearActive() this.className = "active" var left = ix * -DomEle.ImgWidth; DomEle.Pic.style.left = `${left}px` } }) }, /** * 鼠标悬停 * @constructor */ BindOnmouseover() { DomEle.main.onmouseover = function () { clearInterval(DomEle.AutoPlay) } }, /** * * @constructor */ BindOnmouseout() { DomEle.main.onmouseout = () => { this.Auto() } }, Auto() { DomEle.AutoPlay = setInterval(() => { this.change(-DomEle.ImgWidth) }, defaultOption.time * 1000); }, /** * 主要动画过渡 * @param off number 传入的偏移距离 */ change: function (off) { var oldLeft = parseInt(DomEle.Pic.style.left); var newLeft = oldLeft + (off); var index = parseInt(`${(newLeft / -DomEle.ImgWidth)}`); if (newLeft > 0) { newLeft = -( (defaultOption.data.length-1) * DomEle.ImgWidth ) index = 2 } if (newLeft < -( (defaultOption.data.length-1) * DomEle.ImgWidth )) { newLeft = 0; index = 0 } this.ClearActive() DomEle.Dot.childNodes[index].className = "active"; DomEle.Pic.style.left = `${newLeft}px` }, ClearActive() { DomEle.Dot.childNodes.forEach(function (a,b){ a.className = "" }); }, /** * 创建最外层父节点main * @constructor */ CreatedMain: function () { DomEle.main = document.createElement("div") DomEle.main.className = "main"; }, /** * 图片父节点 * @constructor */ CreatedPic: function () { DomEle.Pic = document.createElement("ul"); DomEle.Pic.className = "pic"; DomEle.Pic.style.left = "0px" defaultOption.data.forEach((val,index)=> { DomEle.Pic.innerHTML += `