<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Oo緣來是你oO


    posts - 120,comments - 125,trackbacks - 0

    CSS+JavaScript 實現TabPane頁簽

    馬嘉楠    2008-12-30

     

    共同學習,歡迎轉載。轉載請注明地址【http://blog.csdn.net/majianan/archive/2008/12/30/3646565.aspx】,謝謝!

     

    CSS+JavaScript 實現TabPane頁簽功能,支持二級tabPane(tabPane嵌套)。

    如果標題的長度大于設置的width值,則用“...”來顯示。但是FF不支持該效果,由于CSS水平有限,暫時沒有修改!-  -

     

    效果如下圖:


    • 使用前提,在HTML頁面中引入一個CSS文件,和一個JavaScript文件。如下:

     

     <HEAD> 
      
    <TITLE>Css + Javascript = tabPane</TITLE>
     
      
    <META NAME="Author" CONTENT="majianan">
     
      
    <script type="text/javascript" src="tabPane.js"></script>
     
        
    <link type="text/css" rel="stylesheet"  href="tabPane.css"  />
     
     
    </HEAD>

     

    引入CSS文件:<link type="text/css" rel="stylesheet"  href="tabPane.css"  />

    引入JavaScript文件:<script type="text/javascript" src="tabPane.js"></script>

    代碼見后

     

    • 對于每一個tab頁分別創建一個DIV來顯示。例如代碼中的"testTabDiv"、"basicInfo"、"btns1"等

     

    <BODY> 
         
    <div id="testTabDiv" style="width:800px;"></div>
     

    <div id="basicInfo" style="padding:8px;">
            
        
    <table>
     
            
    <tr><td>姓 名:</td><td><input type="text" id="text1" /></td></tr>
     
            
    <tr><td>性 別:</td><td><input type="text" id="text2" /></td></tr>
     
            
    <tr><td>民 族:</td><td><input type="text" id="text3" /></td></tr>
     
            
    <tr><td>學 歷:</td><td><input type="text" id="text4" /></td></tr>
              
            
    <tr><td>公 司:</td><td><input type="text" id="text5" /></td></tr>
     
            
    <tr><td>職 務:</td><td><input type="text" id="text5" /></td></tr>
     
            
    <tr><td>年 薪:</td><td><input type="text" id="text5" /></td></tr>
     
        
    </table>
     
    </div>
     

    <div id="btns" style="padding:8px;"></div>
      

    <div id="myBlog" style="padding:8px;">
     
     
    <iframe src="http://www.baidu.com" style="width:95%;height:500">
     
    </iframe>
     
    </div>
      

    <div id="btns1" style="padding:8px;">
     
        
    <table border="0" cellpadding="0" cellspacing="1" class="border5"  bgcolor="#BCDDF8">
     
            
    <tr id="trEdit">
     
                
    <td><input class="button" type="button" value="Edit" style="width:100px"></td>
     
            
    </tr>
     
            
    <tr id="trDel">
     
                
    <td><input class="button" type="button" value="Delete" style="width:100px"></td>
     
            
    </tr>
     
        
    </table>
     
    </div>
      
    <div id="basicInfo1" style="padding:8px;">
           
    <table>
          
        
    <tr><td>公 司:</td><td><input type="text" id="text5" /></td></tr>
     
        
    <tr><td>職 務:</td><td><input type="text" id="text5" /></td></tr>
     
        
    <tr><td>年 薪:</td><td><input type="text" id="text5" /></td></tr>
     
    </table>
     
    </div>
     

    <div id="basicInfo2" style="padding:8px;height:300">
             
    <table>
     
        
    <tr><td>姓 名:</td><td><input type="text" id="text1" /></td></tr>
     
        
    <tr><td>性 別:</td><td><input type="text" id="text2" /></td></tr>
     
        
    <tr><td>民 族:</td><td><input type="text" id="text3" /></td></tr>
     
        
    <tr><td>學 歷:</td><td><input type="text" id="text4" /></td></tr>
     
    </table>
     
    </div>
     

     
    </BODY>
     
     
    <script>
     
        
    var tp = new TabPane("testTabDiv"
    ); 
        tp.addTabPage({title:
    "Test New Func" ,width:100 ,panel:"basicInfo"
    }); 
        tp.addTabPage({title:
    "CSDN Blog Web JavaScript" ,width:100 ,panel:"btns"
    });      
        tp.addTabPage({title:
    "My Blog URL" ,width:100 ,panel:"myBlog"
    }); 
             
        tp 
    = new TabPane("btns"
    ); 
        tp.addTabPage({title:
    "basicInfo1" ,width:150 ,panel:"basicInfo1"
    }); 
        tp.addTabPage({title:
    "basicInfo2" ,width:150 ,panel:"basicInfo2"
    }); 
        tp.addTabPage({title:
    "btns1" ,width:150 ,panel:"btns1"
    }); 
        
    </script>

     

    • 生成tab頁JavaScript代碼說明:

    1)var tp = new TabPane("testTabDiv");

        創建一個tab頁,參數為一個String:目標DIV的id。

    2) tp.addTabPage({title:"Test New Func" ,width:100 ,panel:"basicInfo"});

        向tab頁中添加內容。

        參數為一個Object:包括title、width、panel等屬性。

            title:tab頁顯示的標題。

            width:設置標題的寬度。

            panel:tab頁中所要顯示的DIV.id。

    3)二級tab頁,只需要重復上面操作即可。例如

        tp = new TabPane("btns");

        tp.addTabPage({title:"basicInfo1" ,width:150 ,panel:"basicInfo1"});

        tp.addTabPage({title:"basicInfo2" ,width:150 ,panel:"basicInfo2"});

        tp.addTabPage({title:"btns1" ,width:150 ,panel:"btns1"});

    4)DIV的默認style為:

     

    div{ 
      width
    :    100%;
     
      height
    :   auto;
     
    }

     

    也可以在DIV中特殊說明,例如:<div id="basicInfo2" style="padding:8px;height:300">        

     

     

    測試代碼

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <HTML>
     
    <HEAD>
      
    <TITLE>Css + Javascript = tabPan</TITLE>
      
    <META NAME="Author" CONTENT="majianan">
      
    <script type="text/javascript" src="tabPane.js"></script>
        
    <link type="text/css" rel="stylesheet"  href="tabPane.css"  />
     
    </HEAD>
    <BODY>
        
    <div id="testTabDiv" style="width:800px;"></div>
     
    <div id="basicInfo" style="padding:8px;">        
        
    <table>

            
    <tr><td>姓 名:</td><td><input type="text" id="text1" /></td></tr>
            
    <tr><td>性 別:</td><td><input type="text" id="text2" /></td></tr>
            
    <tr><td>民 族:</td><td><input type="text" id="text3" /></td></tr>
            
    <tr><td>學 歷:</td><td><input type="text" id="text4" /></td></tr>            
            
    <tr><td>公 司:</td><td><input type="text" id="text5" /></td></tr>

            
    <tr><td>職 務:</td><td><input type="text" id="text5" /></td></tr>
            
    <tr><td>年 薪:</td><td><input type="text" id="text5" /></td></tr>
        
    </table>
    </div>

    <div id="btns" style="padding:8px;"></div> 

    <div id="myBlog" style="padding:8px;">

     
    <iframe src="http://www.baidu.com" style="width:95%;height:500">
    </iframe>
    </div> 

    <div id="btns1" style="padding:8px;">

        
    <table border="0" cellpadding="0" cellspacing="1" class="border5"  bgcolor="#BCDDF8">
            
    <tr id="trEdit">
                
    <td><input class="button" type="button" value="Edit" style="width:100px"></td>
            
    </tr>
            
    <tr id="trDel">
                
    <td><input class="button" type="button" value="Delete" style="width:100px"></td>
            
    </tr>
        
    </table>
    </div> 
    <div id="basicInfo1" style="padding:8px;">
            
    <table>
            
        
    <tr><td>公 司:</td><td><input type="text" id="text5" /></td></tr>

        
    <tr><td>職 務:</td><td><input type="text" id="text5" /></td></tr>
        
    <tr><td>年 薪:</td><td><input type="text" id="text5" /></td></tr>
    </table>
    </div>

    <div id="basicInfo2" style="padding:8px;height:300">        
    <table>

        
    <tr><td>姓 名:</td><td><input type="text" id="text1" /></td></tr>
        
    <tr><td>性 別:</td><td><input type="text" id="text2" /></td></tr>
        
    <tr><td>民 族:</td><td><input type="text" id="text3" /></td></tr>
        
    <tr><td>學 歷:</td><td><input type="text" id="text4" /></td></tr>
    </table>
    </div>

     
    </BODY>
     
    <script>
         
    var tp = new TabPane("testTabDiv");
         tp.addTabPage({title:
    "Test New Func" ,width:100 ,panel:"basicInfo"
    });
         tp.addTabPage({title:
    "CSDN Blog Web JavaScript" ,width:100 ,panel:"btns"
    });     
         tp.addTabPage({title:
    "My Blog URL" ,width:100 ,panel:"myBlog"
    });
              
         tp 
    = new TabPane("btns"
    );
         tp.addTabPage({title:
    "basicInfo1" ,width:150 ,panel:"basicInfo1"
    });
         tp.addTabPage({title:
    "basicInfo2 CSDN Blog" ,width:100 ,panel:"basicInfo2"
    });
         tp.addTabPage({title:
    "btns1" ,width:150 ,panel:"btns1"
    });
         
    </script>

    </HTML>

    tabPane.css
    div{
        width
    :    100%;
        height
    :    auto;
    }
    .tab 
    {
        font-family
    :    Verdana, Helvetica, Arial;
        font-size
    :        12px;
        position
    :    relative;
        width
    :        100%;
    }
    .tab-border 
    {border:1px solid;border-color:    rgb(120,172,255);}
    .tab-head 
    {
        background-color
    :rgb(234,242,255);;
        border
    :0px;

        height
    :23px;
        line-height
    :20px;
        position
    :relative;    
    }

    .tab-head ul
    {
        border
    :0px;
        height
    :23px;
        list-style
    :none;      
        margin
    :0px;
          
        text-align
    :center;

        padding
    :0;
        position
    :absolute;
        
    }
    .tab-head li
    {    
        border
    :    1px solid;

        border-color
    :    rgb(120,172,255);
        border-left
    :    0;
        border-bottom
    :    0;
        border-top
    :        0;
        cursor
    :pointer;
        color
    :#416AA3;    
        float
    :left;

        display
    :block;
        height
    :22px;!important;height:20px;
        line-height
    :20px; 
        padding
    :        2px 6px 0px 6px;

        margin-top
    :    2px;
        margin-right
    :    -1px;
        text-overflow
    :ellipsis; 
        white-space
    :nowrap;
     
        overflow
    :hidden;


    }
    .tab-head li.hover
    {
        border
    :            1px solid rgb(120,172,255);
        border-bottom
    :    0;
        padding
    :        0px 6px 3px 6px;
        margin
    :            0px 1px 0px 0px;
        background
    :        white;
        font-size
    :            13px;
        font-weight
    :    bold;
        color
    :                rgb(0,66,174);
        overflow
    :visible;    
    }


    tabPane.js
    var TabPaneConfig = {
        idPrefix: 
    "tab-panel-object-"
    ,
        idCounter: 
    0
    ,
        getId: 
    function(){ return this.idPrefix+this.idCounter++
    ;},
        tabHeadId: 
    "tabHead"
    ,
        tabHeadClass: 
    "tab-head tab-border"
    ,
        tabBodyId: 
    "tabBody"
    ,
        tabBodyClass: 
    "tab-border"

    }

    function TabPane(id){
        
    this.id =
     id;
        
    this.height = "100%"
    ;
        
    this.width = "100%"
    ;
        
        
    this.tabPages = 0
    ;
        
    this.head = null
    ;
        
    this.body = null
    ;    
    }

    TabPane.prototype.init 
    = function
    (){    
        
    var r = document.getElementById(this
    .id);
        
    if(!r.style.overflow)    r.style.overflow = "auto"
    ;
        r.className 
    = "tab"
    ;
        
        
    //create head

        var div = document.createElement("div");
        div.id 
    =
     TabPaneConfig.tabHeadId;
        div.className 
    =
     TabPaneConfig.tabHeadClass;
        
        r.appendChild(div);
        
    this.head =
     div;
        
        
    var ul = document.createElement("ul"
    );
        div.appendChild(ul);
        
        
    //create body

        div = document.createElement("div");
        div.id 
    =
     TabPaneConfig.tabBodyId;
        div.className 
    =
     TabPaneConfig.tabBodyClass;
        
        r.appendChild(div);    
        
    this.body =
     div;
    }


    TabPane.prototype.addTabPage 
    = function
    (obj){
        
    if(!document.getElementById(obj.panel)) return
    ;
        
    if(!this.tabPages)  this
    .init();    
            
        
    this.head.firstChild.appendChild(this
    .createTabTitle(obj));
        
    this
    .body.appendChild(document.getElementById(obj.panel));    
        
    this.tabPages++
    ;
    }

    TabPane.prototype.createTabTitle 
    = function
    (obj){
        
    var li = document.createElement("li"
    );
        li.id 
    =
     TabPaneConfig.getId();    
        li.data 
    =
     obj.panel;
        li.onclick
    =
    tabOnClick;
        li.style.width 
    =
     obj.width;
        
        
    if(this
    .tabPages){
            li.className
    =""
    ;
            document.getElementById(obj.panel).style.display
    ="none"
    ;    
        }
    else
    {
            li.className
    ="hover"
    ;
            document.getElementById(obj.panel).style.display
    ="block"
    ;    
        }
            
        
    var textNode =
     document.createTextNode(obj.title);
        li.appendChild(textNode);
        
        
    return
     li;
    }

    function
     tabOnClick(){    
      
    var event = window.event || arguments[0
    ];
      
    var element = event.srcElement ||
     event.target;  
        
    var liArr = element.parentNode.getElementsByTagName("li"
    );
        
    for(var i=0; i<liArr.length; i++
    ){
            liArr[i].className
    =""
    ;
            document.getElementById(liArr[i].data).style.display
    ="none"
    ;
        }
        element.className
    ="hover"
    ;    
        document.getElementById(element.data).style.display
    ="block"
    ;
    }






    馬嘉楠
    jianan.ma@gmail.com

    posted on 2008-12-30 14:35 馬嘉楠 閱讀(4033) 評論(2)  編輯  收藏 所屬分類: SoureCodeJava ScriptWeb 頁面

    FeedBack:
    # re: 【原】CSS+JavaScript 實現TabPane頁簽
    2008-12-30 16:07 | HiMagic!
    code還真不少,試一下tabless的實現方法吧  回復  更多評論
      
    # re: 【原】CSS+JavaScript 實現TabPane頁簽
    2008-12-30 16:19 | 夢想在這里起飛
    這個寫得不錯,看看我的這個:
    完全開源、免費的報表設計器:
    http://ireport.cubebi.com
      回復  更多評論
      
    主站蜘蛛池模板: 亚洲av麻豆aⅴ无码电影| 久久亚洲精品成人AV| a级在线免费观看| 日韩精品亚洲人成在线观看| 成人无码区免费A片视频WWW| 黄页网址在线免费观看| 久久91亚洲精品中文字幕| 成年美女黄网站色大免费视频| 水蜜桃视频在线观看免费| 亚洲视频在线观看一区| 嫩草视频在线免费观看| 国产性生大片免费观看性| 亚洲一区无码中文字幕乱码| 四虎国产精品免费视| 无码囯产精品一区二区免费 | 免费无码成人AV片在线在线播放| 成年大片免费高清在线看黄| 亚洲精品中文字幕乱码影院| 亚洲精品视频在线观看你懂的| 中文字幕免费视频一| 一级特级女人18毛片免费视频| 亚洲在成人网在线看| 亚洲愉拍99热成人精品热久久| 青青视频观看免费99| 久久免费美女视频| 老司机午夜精品视频在线观看免费 | 日本免费无遮挡吸乳视频电影| a毛片免费观看完整| 亚洲heyzo专区无码综合| 亚洲综合久久久久久中文字幕| 国产精品亚洲综合一区| 国内一级一级毛片a免费| 最近2019免费中文字幕6| 国产裸体美女永久免费无遮挡| 亚洲成年网站在线观看| 久久精品国产亚洲av高清漫画| 国产亚洲精品不卡在线| 国产又大又粗又硬又长免费| 欧洲黑大粗无码免费| 亚洲美女视频免费| 久草免费福利视频|