javascript原生小练习(二)--轮播图滚动效果

<pre name="code" class="javascript"><script type="text/javascript">
function setClass(obj,classname)
{
	//alert(obj.className)
	var reg =new RegExp("(\\s|^)" + classname + "(\\s|$)");//前面有空格或者以classname为开头,后面有空格或者以classname为结尾
	return {
		hasClass : obj.className.match(reg),
	    addClass : function(){
			if(!this.hasClass)
			{
				obj.className += " "+classname; 
			}
		},
	    removeClass : function(){
			if(this.hasClass)
			{
				
				obj.className = obj.className.replace(reg,"");
			}
		}
	}
}

function scrollFun(id)
{
	var scrollObj = document.getElementById(id).getElementsByTagName("div"),
		init = {
				timer : null,
				currentIndex : 0,
				con : {
						obj : scrollObj[0].getElementsByTagName("ul")[0],
						width : 400,
						len : scrollObj[0].getElementsByTagName("ul")[0].getElementsByTagName("li").length
					  },
				tit : scrollObj[1].getElementsByTagName("a"),
				btn : {
					  	prev : scrollObj[2].getElementsByTagName("a")[0],
					  	next : scrollObj[2].getElementsByTagName("a")[1]
					  },
				autoplay : false
		};
		autoChange();//自动播放
		for(var i = 0;i < init.tit.length;i++)
		{
			(function($i){
			  	init.tit.item(i).onclick = function(){
					show($i);
			  	}
			})(i);
			
		}
		init.btn.prev.onclick = function(){
				var index = init.currentIndex - 1;
				if( index >= 0)
					show(index);
			}
		init.btn.next.onclick = function(){
				var index = init.currentIndex + 1;
				if( index <= init.con.len - 1)
					show(index);
			}
		function autoChange(){
			init.autoplay = true;
			init.timer = setInterval(function(){
				var index = init.currentIndex + 1;
					if(index > init.con.len - 1)
					{
						index = 0;
					}
					show(index);
				},2500);
			
		}
		
		function show(index){
			clearInterval(init.timer);
			var cIndex = index - init.currentIndex,prevLeft = init.currentIndex * init.con.width,nowLeft = index * init.con.width,
			timer2 = setInterval(function(){
					if(Math.abs(prevLeft - nowLeft)>= 1)
					{
						if(cIndex > 0)
							prevLeft += init.con.width/20;
						else 
							prevLeft -= init.con.width/20;
						init.con.obj.style.left = "-" + prevLeft + "px";
						
					}
					else
					{
						init.currentIndex = index;
						init.con.obj.style.left = "-" + nowLeft + "px";
						for(var j = 0;j < init.tit.length; j++)
						{
							if(j == init.currentIndex)
							{
								setClass(init.tit[j],"current").addClass();
							}
							else
							{
								setClass(init.tit[j],"current").removeClass();
							}
						}
						clearInterval(timer2);
						if(init.autoplay)
						{
							autoChange();
						}
						
					}
					
				},10);
				
		}
	
}

window.onload = function(){
	scrollFun("js-scroll");
}
	

</script>


 
<div id="js-scroll">
	<div class="scroll-wrap">
    	<ul class="scroll-list">
        	<li class="item">1</li>
            <li class="item">2</li>
            <li class="item">3</li>
            <li class="item">4</li>
        </ul>
    </div>
	<div class="scroll-tit">
    	<a class="item current">1</a>
        <a class="item">2</a>
        <a class="item">3</a>
        <a class="item">4</a>
    </div>
    <div class="scroll-btn">
    	<a class="btn prev">上一张</a>
        <a class="btn next">下一张</a>
    </div>
    
</div>


<style type="text/css">
*{margin:0;padding:0;list-style:none;}
#js-scroll{position:relative}
.scroll-wrap{width:400px;height:300px;overflow:hidden;position:relative;}
.scroll-list{width:20000em;height:100%;position:absolute;left:0;}
.scroll-list .item{float:left;width:400px;height:100%;background:#ddd;}
.scroll-tit .current{color:red;}
</style>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值