Tab选项卡切换

内容来自慕课网:http://www.imooc.com/learn/176

Tab选项卡四种:滑动切换、点击切换、延迟切换、自动切换。

其中滑动切换和点击切换的区别不过就是onclick 和onmouseover()

核心内容是设置index

滑动切换:

<!DOCTYPE html>
<html>
<head>
	<title>Tab切换</title>
	<meta charset="utf-8">
	<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
	<div id = "notice" class = "notice">
		<div class = "notice-tit" id = "notice-tit">
			<ul>
				<li><a href="#">公告</a></li>
				<li><a href="#">规则</a></li>
				<li><a href="#">论坛</a></li>
				<li><a href="#">安全</a></li>
				<li class = "select"><a href="#">公益</a></li>
			</ul>
		</div>
		<div id = "notice-con" class = "notice-con">
			<div class = "mod" style = "display:none;">
				<ul>
					<li><a href="#">雕栏玉砌应犹在</a></li>
					<li><a href="#">雕栏玉砌应犹在</a></li>
					<li><a href="#">雕栏玉砌应犹在</a></li>
					<li><a href="#">雕栏玉砌应犹在</a></li>
				</ul>
			</div>
			<div class = "mod" style = "display:none;">
				<ul>
					<li><a href="#">春花秋月何时了</a></li>
					<li><a href="#">春花秋月何时了</a></li>
					<li><a href="#">春花秋月何时了</a></li>
					<li><a href="#">春花秋月何时了</a></li>
				</ul>
			</div>
			<div class = "mod" style = "display:none;">
				<ul>
					<li><a href="#">小楼昨夜又东风</a></li>
					<li><a href="#">小楼昨夜又东风</a></li>
					<li><a href="#">小楼昨夜又东风</a></li>
					<li><a href="#">小楼昨夜又东风</a></li>
				</ul>
			</div>
			<div class = "mod" style = "display:none;">
				<ul>
					<li><a href="#">故国不堪回首明月中</a></li>
					<li><a href="#">故国不堪回首明月中</a></li>
					<li><a href="#">故国不堪回首明月中</a></li>
					<li><a href="#">故国不堪回首明月中</a></li>
				</ul>
			</div>
			<div class = "mod" style = "display:none;">
				<ul>
					<li><a href="#">恰似一江春水向东流</a></li>
					<li><a href="#">恰似一江春水向东流</a></li>
					<li><a href="#">恰似一江春水向东流</a></li>
					<li><a href="#">恰似一江春水向东流</a></li>
				</ul>
			</div>
		</div>
	</div>

	<script type="text/javascript">
		window.onload = function(){
			var ul = document.getElementById("notice-tit");
			var lis = ul.getElementsByTagName("li");
			var conul = document.getElementById("notice-con");
			var cons = conul.getElementsByTagName("div");
			for(var i = 0; i <lis.length; i++){
				lis[i].index = i;
				lis[i].onmouseover = function(){
					
					for(var m = 0; m < lis.length; m++){
						lis[m].className = " ";
					}
					this.className = "select";

					for(var n = 0; n < cons.length; n++){
						cons[n].style.display = 'none';
					}
					//alert(this.index);
					cons[this.index].style.display = 'block';
				}
			}
		}
	</script>
</body>
</html>
小练习:

源码:

<!DOCTYPE html>
<html>
<head>
	<title></title>
	<meta charset="utf-8">
	<style type="text/css">
		*{
			margin:0;;
			padding: 0;
			font-size:13px;
			list-style: none;
		}
		.menu{
			width:210px;
			margin:50px auto;
			border:1px solid #ccc;
		}
		.menu p{
			height: 25px;
			line-height: 25px;
			font-weight: bold;
			background: #eee;
			border-bottom:1px solid #ccc;
			cursor:pointer;
			padding-left: 5px;
		}
		.menu div ul{
			display: none;
		}
		.menu li{
			height:24px;
			line-height: 24px;
			padding-left: 5px;
		}
	</style>
	<script type="text/javascript">
		window.onload = function(){
			var menu = document.getElementById("menu");
			var p = menu.getElementsByTagName("p");
			var ul = menu.getElementsByTagName("ul");
			for(var i = 0 ; i < p.length; i++){
				p[i].index = i;
				p[i].onclick = function(){
					
					if(ul[this.index].style.display == "block"){
						ul[this.index].style.display = "none";
					}
					else{
						for(var j = 0; j < ul.length; j++){
							ul[j].style.display = 'none';
						}
					    ul[this.index].style.display = "block";
				    }
	
				}

			}
		}
	</script>
</head>
<body>
	<div class = "menu" id = "menu">
		<div>
			<p>Web前端</p>
			<ul style = "display:block">
				<li>JavaScript</li>
				<li>DIV+CSS</li>
				<li>jQuery</li>
			</ul>
		</div>
		<div>
			<p>后台脚本</p>
			<ul>
				<li>PHP</li>
				<li>ASP.net</li>
				<li>JSP</li>
			</ul>
		</div>
		<div>
			<p>前端框架</p>
			<ul>
				<li>Exitjs</li>
				<li>Esspress</li>
				<li>YUI</li>
			</ul>
		</div>
	</div>
</body>
</html>


延迟切换:

延迟切换其实就是利用了setTimeout()来实现延迟效果,而setTimeout和setInterval同样作为定时器函数,其区别在于:

setTimeout() 只执行 code 一次。如果要多次调用,请使用 setInterval() 或者让 code 自身再次调用 setTimeout()。

除此之外,setTimeout和setInterval都是windows的函数,因此在这两个函数中this指向的是windows。

源码:

window.onload = function(){
			var ul = document.getElementById("notice-tit");
			var lis = ul.getElementsByTagName("li");
			var conul = document.getElementById("notice-con");
			var cons = conul.getElementsByTagName("div");
			var timer = null;
			for(var i = 0; i < lis.length; i++){
				lis[i].index = i;
				lis[i].onmouseover = function(){
					if(timer){
						clearTimeout(timer);
						timer = null;
					}

					for(var j = 0; j < lis.length; j++){
						lis[j].className = " ";
						cons[j].style.display = "none";
					}
                   <span style="white-space:pre">			</span>var that = this;
					timer = setTimeout(function(){
						that.className = "select";
						cons[that.index].style.display = "block";
					},500)
				}
			}
		}




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值