tab栏切换的实现

626 阅读1分钟

实现效果图:

代码:

<!DOCTYPE html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<title>Tab栏切换</title>
	<style>
		* {
			margin: 0;
			padding: 0;
		}

		.tab {
			width: 800px;
			height: 45px;
			border: 1px solid #ccc;
			border-bottom: 1px solid #c81623;
			background: #fafafa;
			position: relative;
			margin: 100px auto;
		}

		.tab_list li {
			width: 160px;
			height: 45px;
			list-style: none;
			line-height: 45px;
			text-align: center;
			float: left;
		}

		.tab_list .current {
			background-color: #c81623;
			color: #fff;
		}

		.item {
			width: 800px;
			height: 200px;
			padding-top: 40px;
			/*line-height:200px;*/
			font-size: 30px;
			color: #fff;
			text-align: center;
			text-shadow: 2px 2px 4px #000000;
			background: #efefef;
			/*opacity: 0.8;*/
			top: 47px;
			position: absolute;
		}
	</style>
</head>

<body>
	<div class='tab'>
		<div class='tab_list'>
			<ul>
				<li class='current'>个性推荐</li>
				<li>歌单</li>
				<li>主播电台</li>
				<li>排行榜</li>
				<li>歌手</li>
			</ul>
		</div>
		<div class='tab_con'>
			<div class="item one" style='display:block'>每日歌曲推荐</div>
			<div class="item two">精品歌单倾心推荐,给最懂音乐的你</div>
			<div class="item thr">上瘾烟嗓情感之声</div>
			<div class="item fou">新歌飙升榜</div>
			<div class="item fiv">歌手排行榜</div>
		</div>
	</div>
	<!--  tab 栏切换有2个模块
 模块的选项卡,点击其中的某一个,被点击的这一个底色将变成红色的,其余的不变(排他思想)使用修改类的名称的方式。 -->
	<!--  下面显示模块内容,会随着上面的选项卡变化,所以下面模块变化写到点击事件里面。
 规律:下面模块显示内容和上面的选项卡一一对应,相匹配。
  -->

	<script>
		var tab_list = document.querySelector('.tab_list');
		var lis = tab_list.querySelectorAll('li');
		var items = document.querySelectorAll('.item');
		//for 循环绑定点击事件
		for (var i = 0; i < lis.length; i++) {
			lis[i].setAttribute('index', i);
			lis[i].onclick = function () {
				//
				for (var i = 0; i < lis.length; i++) {
					lis[i].className = '';
				}
				//留下现在需要用的
				this.className = 'current';
				//下面显示内容模块
				var index = this.getAttribute('index');
				console.log(index);
				//去掉其他的 item,让这些隐藏起来
				//只留下当前的 item,让它显示出来
				for (var i = 0; i < items.length; i++) {
					items[i].style.display = 'none';
				}
				items[index].style.display = 'block';
			}
		}
	</script>
</body>
</html>