JS幻灯片,循环播放,滚动导航,jQuery平滑旋转幻灯片

最近在帮别人改一些东西,在网上找了好久,但是没有相同的,自己改了下,拿出来分享下:

先展示下效果把:


index.html 页面展示代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<LINK href="css/css.css" rel="stylesheet" type="text/css"> </LINK>
<SCRIPT language="JavaScript" src="js/16sucai.js"></SCRIPT>
<script type="text/javascript">


</script>
</head>

<body>

<DIV id="box">
<PRE class="prev" style="display: none;">prev</PRE>
<PRE class="next" style="display: none;">next</PRE>
<UL>
  <LI><IMG name='1' src="images/main_right_p.jpg">
  <DIV >
  <P>小乔,三国时期的主要女性人物之一。在三国时归属吴国,国色流离、资貌绝伦,是当时有名的东吴美女。</P></DIV></LI>
  <LI><IMG  name='2' src="images/main_right_p.jpg">
  <DIV>
  <P>潘安,西晋文学家,本名潘岳。中国古代最著名的美男子之首、"金谷二十四友"之首。</P></DIV></LI>
  <LI><IMG  name='3' src="images/main_right_p.jpg">
  <DIV>
  <P>朱元璋,明王朝的开国皇帝,建立了全国统一的封建政权。</P></DIV></LI>
  <LI><IMG name='4' src="images/main_right_p.jpg">
  <DIV >
  <P>吕雉,西汉开国皇帝高祖刘邦的原配夫人,中国历史上第一位掌权的女性统治者。</P></DIV></LI>
  <LI><IMG name='5' src="images/main_right_p.jpg">
  <DIV >
  <P>诸葛亮,蜀汉丞相,三国时期杰出的政治家、战略家、发明家、军事家。</P></DIV></LI>  
 </UL>
 <div class='numbutdiv'>
 	<div class='ndv'>
 		<label name='numBut' id='0'></label>
 		<label name='numBut' id='1'></label>
 		<label name='numBut' id='2'></label>
 		<label name='numBut' id='3'></label>
 		<label name='numBut' id='4'></label>
 	</div>	
 
 </div>
 </DIV>

</body>
</html>


接下来是对应的JS文件内容:

//var tempi=0; 
function ZoomPic ()
{
	this.initialize.apply(this, arguments);
}
ZoomPic.prototype = 
{
	initialize : function (id)
	{
		var _this = this;
		this.wrap = typeof id === "string" ? document.getElementById(id) : id;
		this.oUl = this.wrap.getElementsByTagName("ul")[0];
		this.aLi = this.wrap.getElementsByTagName("li");
		this.spans = this.wrap.getElementsByTagName("label");
		this.prev = this.wrap.getElementsByTagName("pre")[0];
		this.next = this.wrap.getElementsByTagName("pre")[1];
		this.timer = null;
		this.aSort = [];
		this.aSpan = [];
		this.iCenter = 2;
		this._doPrev = function () {return _this.doPrev.apply(_this)};
		this._doNext = function () {return _this.doNext.apply(_this)};
		this.options = [
			{width:50, height:212, top:55, left:0, zIndex:1},
			{width:90, height:252, top:35, left:50, zIndex:2},
			{width:400, height:292, top:10, left:140, zIndex:3},
			{width:90, height:252, top:35, left:540, zIndex:2},
			{width:50, height:212, top:55, left:630, zIndex:1}
		];
		for (var i = 0; i < this.aLi.length; i++) this.aSort[i] = this.aLi[i];
		for (var i = 0; i < this.spans.length; i++) this.aSpan[i] = this.spans[i];
		this.aSort.unshift(this.aSort.pop());
		this.setUp();
		this.addEvent(this.prev, "click", this._doPrev);
		this.addEvent(this.next, "click", this._doNext);
		this.doImgClick();
		this.dospansClick();
		this.timer = setInterval(function ()
		{
			_this.doNext()	
		}, 3000);		
		this.wrap.onmouseover = function ()
		{
			clearInterval(_this.timer)	
		};
		this.wrap.onmouseout = function ()
		{
			_this.timer = setInterval(function ()
			{
				_this.doNext()	
			}, 3000);	
		}
	},
	doPrev : function ()
	{
		this.aSort.unshift(this.aSort.pop());//删除数组最后一项,并且返回数组 获取最后一位
		this.setUp()
	},
	doNext : function ()
	{
		this.aSort.push(this.aSort.shift());//删除数组第一项,并且返回数组  删除第一位,然后把第一位push到最后一个上面
		this.setUp()
	},
	doImgClick : function ()
	{
		var _this = this;
		for (var i = 0; i < this.aSort.length; i++)
		{
			this.aSort[i].onclick = function ()
			{ //alert(this.index);
				if (this.index > _this.iCenter)
				{
					for (var i = 0; i < this.index - _this.iCenter; i++) _this.aSort.push(_this.aSort.shift());
					_this.setUp()
				}
				else if(this.index < _this.iCenter)
				{
					for (var i = 0; i < _this.iCenter - this.index; i++) _this.aSort.unshift(_this.aSort.pop());
					_this.setUp()
				}
			}
		}
	},dospansClick:function(){
		var _this = this;
		for (var i = 0; i < this.aSpan.length; i++)
		{
			this.aSpan[i].onclick = function ()
			{
				//alert(this.id);
				//alert(_this.aSort[_this.iCenter].getElementsByTagName('img')[0].name);//获取到当前是第几个在中间
				var cruuNum=_this.aSort[_this.iCenter].getElementsByTagName('img')[0].name;
//				if (this.id > _this.iCenter)
//				{
//					for (var i = 0; i < this.id - _this.iCenter; i++) _this.aSort.push(_this.aSort.shift());//取 
//					_this.setUp()
				//alert(this.id+'...'+cruuNum);
				if(this.id-cruuNum>0){
					for (var i = 0; i < this.id-cruuNum; i++) _this.aSort.push(_this.aSort.shift());//取 
					_this.setUp()
				}else{
					//if(cruuNum==5){
						//if(this.id-cruuNum>0){
							for (var i = 0; i < -(this.id-cruuNum); i++) _this.aSort.unshift(_this.aSort.pop());//取 
							_this.setUp();
						//}
						
					//}
				}
//				else{
//					for (var i = 0; i < -(this.id-cruuNum); i++) _this.aSort.push(_this.aSort.shift());//取 
//					_this.setUp()
//					
//				}
				
					
				
				
//				}
//				else if(this.id < _this.iCenter)
//				{
//					for (var i = 0; i < _this.iCenter - this.id; i++) _this.aSort.unshift(_this.aSort.pop());
//					_this.setUp()
//				}
				
//				for (var i = 0; i <5; i++){ 
//					_this.aSort.push(_this.aSort.shift());//取第一个
//					alert(_this.aSort[_this.iCenter].getElementsByTagName('img')[0].name+'aaa'+this.id);
//					if(_this.aSort[_this.iCenter].getElementsByTagName('img')[0].name==(this.id+1)){
//						_this.setUp()
//						break;
//					}
//				}
				
			}
		}
	},
	setUp : function ()
	{
		var _this = this;
		var i = 0;
		for (i = 0; i < this.aSort.length; i++) this.oUl.appendChild(this.aSort[i]);//gebytagui0
		for (i = 0; i < this.aSort.length; i++)
		{
			this.aSort[i].index = i;
			//控制浮动层
			if (i < 5)
			{
				
				this.css(this.aSort[i], "display", "block");
				this.doMove(this.aSort[i], this.options[i], function ()
				{
					_this.doMove(_this.aSort[_this.iCenter].getElementsByTagName("img")[0], {opacity:100}, function ()
					{
						_this.doMove(_this.aSort[_this.iCenter].getElementsByTagName("img")[0], {opacity:100}, function ()
						{
							_this.aSort[_this.iCenter].onmouseover = function ()//鼠标放上去
							{
								_this.doMove(this.getElementsByTagName("div")[0], {bottom:0})
							};
							_this.aSort[_this.iCenter].onmouseout = function ()
							{
								_this.doMove(this.getElementsByTagName("div")[0], {bottom:-100})
							}
						})
					})
				});
			}
			else
			{
				this.css(this.aSort[i], "display", "none");
				this.css(this.aSort[i], "width", 0);
				this.css(this.aSort[i], "height", 0);
				this.css(this.aSort[i], "top", 37);
				this.css(this.aSort[i], "left", this.oUl.offsetWidth / 2)
			}
			if (i < this.iCenter || i > this.iCenter)//
			{
				this.css(this.aSort[i].getElementsByTagName("img")[0], "opacity", 30)
				this.aSort[i].onmouseover = function ()
				{
					_this.doMove(this.getElementsByTagName("img")[0], {opacity:100})	
				};
				this.aSort[i].onmouseout = function ()
				{
					_this.doMove(this.getElementsByTagName("img")[0], {opacity:35})
				};
				this.aSort[i].onmouseout();
			}
			else
			{
				//中间 一直是2
				//alert(this.aSort[i].text);//取消变亮事件
				//alert(this.aSort[i].getElementsByTagName("img")[0].name);
				//变换颜色
				var ttSe=this.aSort[i].getElementsByTagName("img")[0].name;
				var numbuts= document.getElementsByName('numBut');
				//alert(numbuts.length);
				
				for(var t=0;t<numbuts.length;t++){
					if(t==0){
						if(ttSe==5){
							numbuts[t].className ='numbutLeftCen';
						}else
						numbuts[t].className ='numbutLeft';
					}else if(t==ttSe){
						numbuts[t].className ='numbutCen';
					}else if(t==numbuts.length){
						//alert(t);
						numbuts[0].className ='numbutCen';
					}else{
						//全部修改class
						numbuts[t].className='numbut';
					}
					//var aObj = document.getElementById("a的ID");
					//添加事件
					//alert(tempi);
//					if(tempi==0){//alert(tempi);
//						if (window.addEventListener) {//Mozilla系列
//							numbuts[t].addEventListener('click', _this.addClick(t+1), false);
//						} else if (window.attachEvent) {//IE
//							numbuts[t].attachEvent('onclick', this.addClick(t+1));
//						}
//					}
				}
				//tempi++;
				this.aSort[i].onmouseover = this.aSort[i].onmouseout = null
			}
		}		
	},addEvent : function (oElement, sEventType, fnHandler)
	{
		return oElement.addEventListener ? oElement.addEventListener(sEventType, fnHandler, false) : oElement.attachEvent("on" + sEventType, fnHandler)
	},
	css : function (oElement, attr, value)
	{
		if (arguments.length == 2)
		{
			return oElement.currentStyle ? oElement.currentStyle[attr] : getComputedStyle(oElement, null)[attr]
		}
		else if (arguments.length == 3)
		{
			switch (attr)
			{
				case "width":
				case "height":
				case "top":
				case "left":
				case "bottom":
					oElement.style[attr] = value + "px";
					break;
				case "opacity" :
					oElement.style.filter = "alpha(opacity=" + value + ")";
					oElement.style.opacity = value / 100;
					break;
				default :
					oElement.style[attr] = value;
					break
			}	
		}
	},
	doMove : function (oElement, oAttr, fnCallBack)
	{
		var _this = this;
		clearInterval(oElement.timer);
		oElement.timer = setInterval(function ()
		{
			var bStop = true;
			for (var property in oAttr)
			{
				var iCur = parseFloat(_this.css(oElement, property));
				property == "opacity" && (iCur = parseInt(iCur.toFixed(2) * 100));
				var iSpeed = (oAttr[property] - iCur) / 5;
				iSpeed = iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed);
				
				if (iCur != oAttr[property])
				{
					bStop = false;
					_this.css(oElement, property, iCur + iSpeed)
				}
			}
			if (bStop)
			{
				clearInterval(oElement.timer);
				fnCallBack && fnCallBack.apply(_this, arguments)	
			}
		}, 30)
	},addClick:function (num){
		//alert(num);
//		if (this.index > _this.iCenter)
//		{
//			for (var i = 0; i < this.index - _this.iCenter; i++) _this.aSort.push(_this.aSort.shift());
//			_this.setUp()
//		}
	}
};
window.onload = function ()
{
	new ZoomPic("box");

};
function tt(){
	//alert(1);
	
}

OK,最后加上一些样式上的东西,就可以跑起来了;

body {
	margin: 0px; padding: 0px;
}
div {
	margin: 0px; padding: 0px;
}
ul {
	margin: 0px; padding: 0px;
}
li {
	margin: 0px; padding: 0px;
}
h4 {
	margin: 0px; padding: 0px;
}
p {
	margin: 0px; padding: 0px;
}
body {
	 no-repeat 50% 0px rgb(0, 0, 0); font: 12px/1.8 arial; color: rgb(255, 255, 255); font-size-adjust: none; font-stretch: normal;
}
a {
	background: rgb(102, 102, 102); padding: 2px 5px; color: rgb(255, 255, 255); text-decoration: none;
}
a:hover {
	background: rgb(255, 153, 0);
}
#box {
	margin: 1px auto 0px; width: 680px; height: 320px; position: relative;
}
#box ul {
	width: 680px; height: 320px; position: relative;
}
#box li {
	background: rgb(0, 0, 0); list-style: none; border-radius: 3px; border:0px solid rgb(0, 0, 0); left: 377px; top: 146px; width: 0px; height: 0px; overflow: hidden; position: absolute; z-index: 0; cursor: pointer;
}

#box li div {
	background: rgb(0, 0, 0); width: 100%; height:40px; bottom: -100px; position: absolute; opacity: 0.7;
}
#box li div h4 {
	font: 12px/24px arial; margin: 0px 10px; border-bottom-color: rgb(51, 51, 51); border-bottom-width: 1px; border-bottom-style: solid; font-size-adjust: none; font-stretch: normal;
}
#box li div h4 span {
	color: red; margin-left: 10px;
}
#box li div p {
	margin: 5px 10px 0px; text-indent: 2em;
}
.numbutLeft{width: 15px; height: 5px; background-color:#AFB7B6; float: left; cursor: pointer;}
.numbut{width: 15px; height: 5px; background-color:#AFB7B6; float: left; margin-left: 5px; cursor: pointer;}
.numbutCen{width: 15px; height: 5px; background-color:#FF0000; float: left; margin-left: 5px; cursor: pointer;}
.numbutLeftCen{width: 15px; height: 5px; background-color:#FF0000; float: left; cursor: pointer;}
.numbutdiv{height: 10px;width: 100%;color: red;margin-top: 0px; padding-top: 0px}
.ndv{height: 10px;width: 95px; margin: 0 auto}
#box .next {
	background-position: -39px 0px; right: -60px;
}
#copyright {
	text-align: center; padding-top: 10px;
}
OOOOOKKK 了,奇特的效果就要出来了 ,还有一些不完美的地方,懒得去改了,有高手可以改改看,但希望分享哦。

效果如下:



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值