js特效tab切换

日常工作中我们常用到tab切换
效果:
在这里插入图片描述
首先我们得完成页面布局
html代码:

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

<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		.btn-box{margin-bottom: 20px;}
		input{
			padding: 5px 10px;
			border:1px solid #ccc;
			margin-right: 10px;
			border-radius: 4px;
		}
		.box div{
			width: 200px;
			height: 200px;
			border: 1px solid #333;
			display: none;
			
		}
		.active{
			background-color: blue;
			color:#fff;
		}
	</style>
</head>

<body>
	<div>
		<div class="btn-box">
			<input type="button" value="一" data-index='0'>
			<input type="button" value="二"  data-index='1'>
			<input type="button" value="三" data-index='2'>
			<input type="button" value="四" data-index='3'>
		</div>
		<div class="box">
			<div style="display:block" >111</div>
			<div>222</div>
			<div>333</div>
			<div>444</div>
		</div>
	</div>
</body>
</html>

原生js:

		var div1 = document.getElementById('hao');
		var abtn = div1.getElementsByTagName('input');
		var div2 = div1.getElementsByTagName('div');
		for(var i=0;i<abtn.length;i++){
			// 给每个button加上索引是为了通过索引去匹配到对应的盒子展示
			abtn[i].index=i;
			// 循环给每个button加上点击事件
			abtn[i].onclick=function(){
				// 隐藏非对应的元素
				for(var i=0;i<abtn.length;i++){
					abtn[i].className='';
					div2[i].style='display:none;';
				}
				// 通过对应索引找到展示的div展示出来
				div2[this.index].style='display:block;';
				this.className='active';
			}
		}

jq写法

	var div2 = $('.box').find('div');
		$('.btn-box input').click(function(e) {
			$('input').removeClass('active');
			div2.hide();
			// 通过创建的自定义属性data-index来区分展示类容,自定义创建属性一定要从0开始,因为索引是从0开始计算
			// div2.eq($(this).data('index')).show();
			// 也可以直接直接获取下标
			div2.eq($(".btn-box input").index(this)).show()
			/*
			*获取索引的几种方式
			*$(this).index()//不传递参数,返回这个元素在同辈中的索引位置。 
			*$(this).index('input')
			*/
			$(this).addClass('active');
		})

总结:其实就是通过索引比对展示出对应的内容

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值