幾種Tab面板實現方法

CSS實現Tab面板

不能自行切換

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style type="text/css">
        *{margin: 0px;padding: 0px;}
        .wrap{
            margin: 20px auto;
            width: 800px;
            height: 500px;
            border: 1px solid crimson;
            position: relative;
        }
        label{
            width: 150px;
            height: 33px;
            float: left;
            text-align: center;
            line-height: 33px;
            border: 1px solid darkcyan;
        }
        label:nth-of-type(4){
            border-right: none;
        }
        label span{
            cursor: pointer;
        }
        label input{
            width: 0;
        }
        label div{
            position: absolute;
            display: none;
        }
        input:checked+div{
            display: block;
        }
    </style>
</head>
<body>
    <div class="wrap">
        <label for="">
            <span>玫瑰</span>
            <input type="radio" name="tab" checked>
            <div>玫瑰花🌹</div>
        </label>
        <label for="">
            <span>雛菊花</span>
            <input type="radio" name="tab">
            <div>雛菊</div>
        </label>
        <label for="">
            <span>向日葵</span>
            <input type="radio" name="tab">
            <div>向日葵</div>
        </label>
        <label for="">
            <span>滿天星</span>
            <input type="radio" name="tab">
            <div>滿天星</div>
        </label>
    </div>
    <script>
        
    </script>
</body>
</html>

在這裏插入圖片描述

JavaScript實現Tab面板

思路:
1.實現標題小模塊的Tab切換

  • 首先給所有的標題小模塊清除樣式

  • 給鼠標移入的標題小模塊添加樣式

2.實現主體模塊和標題小模塊之間的綁定

  • 給標題小模塊添加一個屬性index,用以記錄標題小模塊的索引

  • 通過getAttribute()方法得到索引,從而對應主體模塊的內容

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style type="text/css">
        *{margin: 0px;padding: 0px;}
        #box{
            width: 700px;
            height: 300px;
            border: 1px solid darkgreen;
            margin: 30px;
        }
        #list li{
            float: left;
            width: 150px;
            height: 50px;
            border: 1px solid sienna;
            list-style: none;
            text-align: center;
            line-height: 50px;
        }
  #deli{
      height: 50px;
  }
        #list,#deli div{
            height: 100%;
            display: none;
        }
        #list,#deli .current{
            display: block;
            background-color: tan;
        }
    </style>
</head>
<body>
    <div id="box">
        <ul id="list">
            <li class="current">english</li>
            <li>chinese</li>
            <li>math</li>
            <li>P.E.</li>
        </ul>
        <div id="deli">
            <div class="current">english</div>
            <div>chinese</div>
            <div>math</div>
            <div>p.e</div>
        </div>
    </div>
    <script>
        var list=document.getElementById('list');
        //獲取所有li
        var lis=list.getElementsByTagName('li');
        var deli=document.getElementById('deli');
        //獲取所有主體的div
        var divs=deli.getElementsByTagName('div');
        for(var i=0;i<lis.length;i++){//給所有li註冊事件
            var li=lis[i];
            li.setAttribute('index',i);
//當鼠標移入li的時候,清除所有小模塊的樣式,只給當前小模塊添加樣式
            li.onmouseover=function(){
                for(var i=0;i<lis.length;i++){
                    lis[i].className="";
                    this.className="current";//清除所有模塊樣式
                    divs[i].className='';
                    divs[i].style.display='none';
                    //對當前模塊進行操作
                    var index=parseInt(this.getAttribute('index'));
                    divs[index].className='current';
                    divs[index].style.display='block';
                }
            }
        }
    </script>
</body>
</html>

在這裏插入圖片描述

jQuery實現Tab面板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/jquery-1.8.3.min.js"></script>
    <style type="text/css">
        *{margin: 0px;padding: 0px;}
        .box{
            width: 670px;
            height: 300px;
            margin: 30px;
            border: 1px solid black;
        }
        .wrap li{
            float: left;
            width: 160px;
            height: 50px;
            border: 1px solid sienna;
            list-style: none;
            text-align: center;
            line-height: 50px;
        } 
        .deli{
            height: 100%;
        }       
        .deli div{
            height: 100%;
            display: none;
        }
        .wrap .current{
            font-size: 25px;
        }
        .wrap .current,.deli div.product{
            height: 100%;
            display: block;
            background-color: cornflowerblue;
        }
    </style>
</head>
<body>
    <div class="box">
        <ul class="wrap">
            <li class="current">english</li>
            <li>chinese</li>
            <li>math</li>
            <li>pe</li>
        </ul>
        <div class="deli">
            <div class="product">english</div>
            <div>chinese</div>
            <div>math</div>
            <div>pe</div>
        </div>
    </div>
    <script>
        $(function () {
            $(".wrap>li").mouseover(function () {
                //刪除樣式
                $(this).siblings("li").removeClass("current");
                //增加樣式
                $(this).addClass("current");
                //顯示對應當前div
                var index=$(this).index();
                $(".deli>div").removeClass("product");
                $(".deli>div:eq("+index+")").addClass("product");
              });
          });
    </script>
</body>
</html>

在這裏插入圖片描述

jQuery和Bootstrap實現Tab面板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Tab面板的實現</title>
    <link rel="stylesheet" href="../css/bootstrap-theme.css">
    <link rel="stylesheet" href="../css/bootstrap.css">
    <script src="../js/jquery-1.8.3.min.js"></script>
    <script src="../js/tab.js"></script>
    <script>
        $(function(){
            $('.tabs a:last').tab('show');
        })
    </script>
</head>
<body>
    <ul class="nav nav-tabs">
        <li class="active"><a href="#tab1" data-toggle="tab">玫瑰花🌹</a></li>
        <li><a href="#tab2" data-toggle="tab">雛菊</a></li>    
        <li><a href="#tab3" data-toggle="tab">向日葵</a></li> 
        <li><a href="#tab4" data-toggle="tab">滿天星</a></li> 
        <li><a href="#tab5" data-toggle="tab">雛菊1</a></li>    
        <li><a href="#tab6" data-toggle="tab">向日葵1</a></li> 
        <li><a href="#tab7" data-toggle="tab">滿天星1</a></li>          
    </ul>
    <div class="tab-content">
        <div class="tab-pane active" id="tab1">玫瑰花🌹</div>
        <div class="tab-pane" id="tab2">雛菊</div>
        <div class="tab-pane" id="tab3">向日葵</div>
        <div class="tab-pane" id="tab4">滿天星</div>   
        <div class="tab-pane" id="tab5">雛菊1</div>
        <div class="tab-pane" id="tab6">向日葵1</div>
        <div class="tab-pane" id="tab7">滿天星1</div>         
    </div>     
    </div>
</body>
</html>

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章