用JavaScript实现选项卡功能

--做更好的自己?

 

 

用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>

 

 最终效果:

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。