本文實例中主要是通過判斷點擊菜單在菜單列表中的索引位置來顯示或隱藏選項區.原生js還有很多種實現方法(藍色理想中搜索),為了與jQ版思路保持一致,本文實例用的是循環判斷.有需要的小伙伴可以參考下
總的來說思路比較簡單,就是先獲取節點,然后對節點進行相應的處理,下面是完整的頁面代碼:
原生js:
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
- <title>原生js tab</title>
- <style type="text/css">
- .tab{
- margin:10px auto;
- position:relative;
- width:300px;
- }
- ul,li{
- list-style-type:none;
- padding:0;
- margin:0;
- font:13px/20px SimSun,arial;
- color:#333;
- text-align:center;
- }
- .tabTltle ul li{
- float:left;
- position:relative;
- background:#fefefe;
- background:-webkit-gradient(linear,left top,left bottom, from(#fefefe), to(#ededed));
- padding:7px 15px;
- border:1px #ddd solid;
- margin-right:-1px;
- cursor:pointer;
- }
- .tabTltle ul li.active{
- background:#fff;
- font-weight: bold;
- }
- .clearfix{
- }
- .clearfix:after{
- display:block;
- clear:both;
- overflow:hidden;
- content:"";
- }
- .tabConn{
- border:1px #eee solid;
- position:relative;
- height:100px
- }
- .tabConn div{
- position:absolute;
- opacity:0;
- filter:alpha(opacity=0);
- padding:5px;
- text-align:center;
- width:100%;
- }
- .tabConn div.current{
- opacity:1;
- filter:alpha(opacity=100);
- }
- </style>
- </head>
- <body>
- <div id="tab" class="tab">
- <div class="tabTltle">
- <ul class="clearfix">
- <li class="active">標題一</li>
- <li>標題二</li>
- <li>標題三</li>
- <li>標題四</li>
- </ul>
- </div>
- <div class="tabConn">
- <div class="current">aaaaaaaaaaaaaaa</div>
- <div>bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
- <div>cccccccccccccccccccccccccccccccc</div>
- <div>ddddddddddddddddddddddddddddd</div>
- </div>
- </div>
- <script type="text/javascript">
- (function(){
- var tab = document.getElementById("tab");
- var tabList = tab.getElementsByTagName("div")[0].getElementsByTagName("li");
- var tabConn = tab.getElementsByTagName("div")[1].getElementsByTagName("div");for(var i=0;i<tabList.length;i++){
- tabList[i].index = i;
- tabList[i].onclick = function(){
- showConn(this.index);
- }
- }
- function showConn(_index){
- var index = _index;for(var j=0;j<tabList.length;j++){
- tabList[j].className = "";
- tabConn[j].className = "";
- tabConn[j].style.opacity=0;
- }
- tabConn[index].className="current";
- tabList[index].className="active";
- }
- })();
- </script>
- </body>
- </html>
下面我們來看一下jQuery寫的(css共用,需要引進jQuery庫):
- <!DOCTYPE html>
- <html>
- <head>
- <meta charset="utf-8">
- <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
- <title>jQuery tab</title>
- <script type="text/javascript" src="js/jquery-1.8.1.min.js"></script>
- <style type="text/css">
- .tab{
- margin:10px auto;
- position:relative;
- width:300px;
- }
- ul,li{
- list-style-type:none;
- padding:0;
- margin:0;
- font:13px/20px SimSun,arial;
- color:#333;
- text-align:center;
- }
- .tabTltle ul li{
- float:left;
- position:relative;
- background:#fefefe;
- background:-webkit-gradient(linear,left top,left bottom, from(#fefefe), to(#ededed));
- padding:7px 15px;
- border:1px #ddd solid;
- margin-right:-1px;
- cursor:pointer;
- }
- .tabTltle ul li.active{
- background:#fff;
- font-weight: bold;
- }
- .clearfix{
- }
- .clearfix:after{
- display:block;
- clear:both;
- overflow:hidden;
- content:"";
- }
- .tabConn{
- border:1px #eee solid;
- position:relative;
- height:100px
- }
- .tabConn div{
- position:absolute;
- opacity:0;
- filter:alpha(opacity=0);
- padding:5px;
- text-align:center;
- width:100%;
- }
- .tabConn div.current{
- opacity:1;
- filter:alpha(opacity=100);
- }
- </style>
- </head>
- <body>
- <h3>jQuery寫的選項卡:</h3>
- <div id="tab2" class="tab">
- <div class="tabTltle tab-title">
- <ul class="clearfix">
- <li class="active">標題一</li>
- <li>標題二</li>
- <li>標題三</li>
- <li>標題四</li>
- </ul>
- </div>
- <div class="tabConn tab-conn">
- <div class="current">aaaaaaaaaaaaaaa</div>
- <div>bbbbbbbbbbbbbbbbbbbbbbbbbbbbbb</div>
- <div>cccccccccccccccccccccccccccccccc</div>
- <div>ddddddddddddddddddddddddddddd</div>
- </div>
- </div>
- <script type="text/javascript">
- $(document).ready(function(){
- var $tabTitle = $('.tab-title').find('li');
- var $tabList = $('.tab-conn > div');
- $tabTitle.click(function(){
- $tabTitle.each(function(){
- $tabTitle.removeClass('active');
- });
- var index = $tabTitle.index(this);
- $(this).addClass('active');
- $tabList.eq(index).addClass('current').siblings().removeClass('current');
- });
- });
- </script>
- </body>
- </html>
是不是簡單了好多!
以上所述就是本文的全部內容了,希望大家能夠喜歡。
新聞熱點
疑難解答
圖片精選