JS实现选项卡切换效果
1、在网页制作过程中,我们经常会用到选项卡切换效果,它能够让我们的网页在交互和布局上都能得到提升
原理:在布局好选项卡的HTML结构后,我们可以看的出来,选项卡实际上是三个选项卡标头和三个对应的版块,如下图,是三个标头分别是教育,娱乐,汽车,当我们单击教育时,教育那个选项卡标头的背景会变成激活状白色,下面的的三个DIV形成的版块只会显示第一个教育的内容。当我们单击娱乐时,娱乐那个选项卡标头的背景会变成激活状白色,下面的的三个DIV形成的版块只会显示第二个娱乐的内容。当我们单击汽车时,汽车那个选项卡标头的背景会变成激活状白色,下面的的三个DIV形成的版块只会显示第三个汽车的内容。
3、 具体的实现是通过getElementsByTagName方法,先对选项卡三个标头H3进行捕获,产生一个数组,我们利用for循环分别对每个标头选项H3添加一个index属性作为它的序号同时注册单击事件,当某个H3被单击时,我们先把所有的H3都变成原始状态,没active类,然后再把被单击的H3要添加一个active类使其变成白色,此时,我们还要知道被单击H3的序号,这样我们可以去,设定与之序号相同的DIV显示出来,而其它的DIV刚隐藏起来。
<!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=gb2312" /> <title>选项卡</title> <style type="text/css"> #tab{width:300px;border:3px solid #CCC;} #tab .active{background-color:#FFF} #tab h3{ margin:0px; padding:0px; font-size:14px; float:left; background-color:#CCC; width:60px; height:24px; line-height:24px; text-align:center; } #tab div{ clear:both; height:100px; font-size:14px; padding:20px 0px 0px 20px; display:none; } </style> <script> window.onload=function(){ var oTab=document.getElementById("tab"); var aH3=oTab.getElementsByTagName("h3"); var aDiv=oTab.getElementsByTagName("div"); for(var i=0;i<aH3.length;i++){ aH3[i].index=i; aH3[i].onclick=function(){ for(var i=0;i<aH3.length;i++){ aH3[i].className=""; aDiv[i].style.display="none"; } this.className="active"; aDiv[this.index].style.display="block"; } } } </script> </head> <body> <div id="tab"> <h3 class="active">教育</h3> <h3>娱乐</h3> <h3>汽车</h3> <div style="display:block">教育的内容</div> <div>娱乐的内容</div> <div>汽车的内容</div> </body> </html>