--做更好的自己❀
用js实现选项卡功能
我们在一些常见的网站中经常看到将很大的内容进行叠加显示,这样就会节省很大的版面,而显示的内容更加丰富,如下淘宝部分截图:
1、仿照以上布局,一个标题标签(我们给它设计五个选项卡标签:公告、规则、论坛、安全、公益,相应的就会有五个一样大小的内容盒子来设计内容)一个内容标签。
<div id="title"> <h3 >公告</h3> <h3 >规则</h3> <h3 >论坛</h3> <h3 >安全</h3> <h3 >公益</h3> </div>
内容如图:
body部分代码如下:
1 <div id="selectCard"> 2 <div id="title"> 3 <h3 onmouseover="show(0)" class="titin">公告</h3> 4 <h3 onmouseover="show(1)">规则</h3> 5 <h3 onmouseover="show(2)">论坛</h3> 6 <h3 onmouseover="show(3)">安全</h3> 7 <h3 onmouseover="show(4)">公益</h3> 8 </div> 9 10 <div id="content"> 11 12 <div class="one"> 13 <ul> 14 <li><a href="#" style="color:#ff4400">马云:恒大队员很爷们</a></li> 15 <li><a href="#">和妈妈开淘宝店的故事</a></li> 16 17 </ul> 18 </div> 19 <div> 20 <ul> 21 <li><a href="#" style="color:#ff4400">三谈滥发变更</a></li> 22 <li><a href="#">虚假交易详解</a></li> 23 24 </ul> 25 </div> 26 <div> 27 <ul> 28 <li><a href="#" style="color:#ff4400">解密金牌卖家</a></li> 29 <li><a href="#">双11备战秘籍</a></li> 30 31 </ul> 32 </div> 33 <div> 34 <ul> 35 <li><a href="#" style="color:#ff4400">卡单、失效都是骗人的</a></li> 36 <li><a href="#">卖家防范红包欺诈提醒</a></li> 37 38 </ul> 39 </div> 40 <div> 41 <ul> 42 <li><a href="#" style="color:#ff4400">淘宝公益网站全新改版</a></li> 43 <li><a href="#">大众评审赢公益金公仔</a></li> 44 45 </ul> 46 </div> 47 48 </div> 49 </div>
2、还没有进行样式设计,按照淘宝图例进行css样式处理(颜色值和尺寸等也可以自己设计的漂亮点,不是美工不讲究,这里只为实现选项卡效果,点击一个标题内容框中即出现相应的内容),css样式代码如下:
#selectCard{ width:298px; height:98px; border:1px solid #e8e8e8; margin-top:100px; } #title{ width:100%; height:27px; background:#f7f7f7; } h3{ float:left; line-height:27px; width:59px; font-weight:300; text-align:center; } #content div{ float:left; margin:10px; height:50px; } #content div ul{ list-style:none; list-style: none outside none; } #content div ul li{ width:148px; height:25px; float:left; display:block; } #content div ul li a{ text-decoration:none; display:inline; float:left; line-height:25px; } a:hover{ color:#ff4400; } #title .titin{ background:white; } #content div{ display:none; } #content .one{ display:block; }
3、我们打开一个页面,就会有位操作时的状态:加上选项卡和其对应的内容为一部分相同色块,经过第一个标题“公告”时,内容one显示,其他two--five暂时隐藏(不需要分别给他们一个类,下面直接用数组代表),这样就要给每个标题一个鼠标事件onmouseover。
#content div{
display:none;
}
#content .one{
display:block;
}
<h3 onmouseover="show(0)" class="titin">公告</h3> <h3 onmouseover="show(1)">规则</h3> <h3 onmouseover="show(2)">论坛</h3> <h3 onmouseover="show(3)">安全</h3> <h3 onmouseover="show(4)">公益</h3>
下面是嵌入的js代码 ❀关键之处❀:
<script> var h3os=document.getElementsByTagName("h3"); //获取标题存入h3os中 var cdivs=document.getElementById("content").getElementsByTagName("div"); //获取标题存入cdivs中 function show(num){ for(var i=0;i<h3os.length;i++){ if(i==num){ h3os[num].className="titin"; cdivs[num].style.display="block"; }else{ h3os[i].className=""; cdivs[i].style.display="none"; } } } </script>
最终效果: