首页 > 其他 > 详细

自写轮播组件

时间:2017-02-15 00:06:01      阅读:283      评论:0      收藏:0      [点我收藏+]
//请在userFlie中传入自己需要的对象
	//构造函数
	//自己传入对象,对象需包含属性:{
//	Imgarr(对象数组)
//	num(常量)
//	父级元素
//}样式请根据自己喜好在objSlide中修改,类名:上箭头:arow_prev,下箭头:arow_next,分页器:banner_nav
// 例:var obj = {
// 	Imgarr: ["./img2/i1.jpeg",
// 		"./img2/i2.jpeg",
// 		"./img2/i3.jpeg",
// 		"./img2/i4.jpeg",
// 		"./img2/i5.jpeg",
// 		"./img2/i6.jpeg"
// 	],
// 	num: 0,
// 	bannerBox: document.getElementById("box1")
// }
function ChangeImg(obj) {
	if(!obj) {
		throw Error("请传入参数对象")
	} else {
		this.odiv = null;
		this.spanleft = null;
		this.spanright = null;
		this.divban = null;
		this.oul = null;
		this.obj = obj;
		//this.m=0;
		this.init()
	}
}

//执行函数	
ChangeImg.prototype.init = function() {
	var that = this;
	this.createDiv();
	this.createDivban();
	this.createspanleft();
	this.createspanright();
	this.createIndexUl();
	this.createIndexLi();
	this.autoPlay();
	$.addEvevt(this.spanright, "click", function() {
		that.next();
	}, false);
	$.addEvevt(this.spanleft, "click", function() {
		that.pre();
	}, false);
	$.addEvevt(this.divban, "mouseover", function() {
		that.divban.classList.add("ban");
		that.spanright.classList.remove("spanx");
		that.spanleft.classList.remove("spanx");
		that.clearAutoPlay();
	}, false);
	$.addEvevt(this.divban, "mouseout", function() {
		this.classList.remove("ban");
		$.addClass(that.spanright, "spanx");
		$.addClass(that.spanleft, "spanx");
		that.autoPlay();
	}, false);
	for(var i = 0; i < (this.obj.Imgarr).length; i++) {
		this.xli[i].index = i;
		this.xli[i].onmouseover = function() {
			for(var i = 0; i < (that.obj.Imgarr).length; i++) {
				that.xli[i].classList.remove("liActive");
			}
			that.obj.num = this.index;
			this.classList.add("liActive");
			that.odiv.style.backgroundImage = "url(" + that.obj.Imgarr[this.index] + " )";
		}

	}
};
ChangeImg.prototype.createDiv = function() {
	var odivx = document.createElement("div");
	odivx.classList.add("odivx");
	odivx.style.backgroundImage = "url(" + this.obj.Imgarr[this.obj.num] + " )";
	this.obj.bannerBox.appendChild(odivx);
	this.odiv = odivx;
};
ChangeImg.prototype.createDivban = function() {
	var divban = document.createElement("div");
	divban.id = "bannerBox";
	this.odiv.insertBefore(divban, this.spanleft); //父节点.insertBefore(要插入节点,插入这个节点之前)
	this.divban = divban;
}
ChangeImg.prototype.createspanleft = function() {
	var spanleft = document.createElement("span");
	spanleft.classList.add("arow_prev");
	spanleft.classList.add("spanx");
	spanleft.style.cursor = "pointer";
	this.divban.appendChild(spanleft);
	this.spanleft = spanleft;
	//alert(333);			
};
ChangeImg.prototype.createspanright = function() {
	var spanright = document.createElement("span");
	spanright.classList.add("arow_next");
	spanright.classList.add("spanx");
	spanright.style.cursor = "pointer";
	this.divban.appendChild(spanright); //加强绑定
	this.spanright = spanright;
	//alert(444);		
}
ChangeImg.prototype.createIndexUl = function() {
	var oul = document.createElement("ul");
	oul.style.listStyle = "none";
	oul.id = "ulx";
	this.divban.appendChild(oul);
	this.oul = oul;
	//alert(555);
}
ChangeImg.prototype.createIndexLi = function(arr) {
	for(i = 0; i < (this.obj.Imgarr).length; i++) {
		var oLi = document.createElement("li");
		oLi.style.cursor = "pointer";
		this.oul.appendChild(oLi);
		oLi.innerText = i + 1;
		oLi.classList.add("banner_nav");
		//alert(666);
	}
	this.xli = this.oul.getElementsByTagName("li");
}
ChangeImg.prototype.next = function() {
	this.obj.num++; //在这里取到了构造函数里面的m
	if(this.obj.num > (this.obj.Imgarr).length - 1) {
		this.obj.num = 0
	}
	this.indexClear();
	this.changeStyle();
}
ChangeImg.prototype.pre = function() {
	this.obj.num--;
	if(this.obj.num < 0) {
		this.obj.num = (this.obj.Imgarr).length - 1;
	}
	this.indexClear();
	this.changeStyle();
}
ChangeImg.prototype.autoPlay = function() {
	var that = this;
	this.timer = setInterval(function() {
		that.next();
	}, 2000)

}
ChangeImg.prototype.clearAutoPlay = function() {
	clearInterval(this.timer);
	//alert(22222);
}

ChangeImg.prototype.changeStyle = function() {
	this.xli[this.obj.num].classList.add("liActive");
	this.odiv.style.backgroundImage = "url(" + this.obj.Imgarr[this.obj.num] + " )";
}
ChangeImg.prototype.indexClear = function() {
	for(i = 0; i < (this.obj.Imgarr).length; i++) {
		this.xli[i].classList.remove("liActive");
	}
}
var bx = new ChangeImg(obj);
仅有js文件,按所需传入对象即可,调试过程也有所保留,希望可以帮助到大家,整体组件可私信我,思维较为局限,仅供交流,有改进的地方还请指正,谢谢

  

自写轮播组件

原文:http://www.cnblogs.com/sxcflyhigher/p/6399517.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!