[html5技術]基於bootstrap製作的多標籤頁(tabs)#1024程式設計師福音來了
阿新 • • 發佈:2019-02-05
下載地址
效果圖
default/預設 (帶有向左、向右移動以及選項選單)
參考Demo: nav-tabs and nav-pills
classic/摺疊 (摺疊隱藏tab)
作用與優勢
- 通過簡單的配置,生成可智慧適配ajax和iframe的多標籤頁。
- 可以直接套用bootstrap的各種模板樣式。
- 在不關閉視窗的情況下,直接重新整理頁面能保留所有標籤頁。(如果使用了表單,請完成表單後再進行此操作)
- 導航標籤tab可移動
- 當標籤數量設定為 1 的時候,隱藏便籤列表
安裝需求
Bootstrap(基本現在html5都需要這個的了)
JQuery
Font Awesone
使用
1.在html的head內引用multitabs的CSS
<link rel="stylesheet" href="plugins/bootstrap-multitabs/css/style.css">
2.在body底部引用multitabs的JS
<script src="plugins/bootstrap-multitabs/js/multitabs.js"></script>
3.並繫結multitabs的區域
<script> $('#content_wrapper').multitabs(); </script>
4.最後在需要關聯連結中加入"multitabs"的class
<a class="multitabs" href="pages/index-ajax-2.html">ajax INFO Tab 2</a>
** 至此,最簡單的多標籤頁(tabs)配置成功!**
進階配置
###連結可新增引數###
[data-type="info"]
指定為content型別為info,共有3種( main | info ), info 為預設配置,可以不用指定。[data-iframe="true"]
指定為iframe模式,當值為false的時候,為智慧模式,自動判斷(內網用ajax,外網用iframe)。預設為false。[data-title="new tab"]
設定後指定標籤頁的標題,預設讀取連結字型。[data-url="index.html"]
如果物件不是<a>
連結,此值可以指定連結URL[data-refresh="true"]
強制更新
初始化配置
下面這些為預設配置,可以自行修改
<script>
$('#content_wrapper').multitabs({
selector : '.multitabs', //觸發multitabs的selector text,注意需要有".","#"等
iframe : false, //iframe模式的總局設定。當值為false的時候,為智慧模式,自動判斷(內網用ajax,外網用iframe)。預設為false。
class : '', //主框架的class
refresh: false, //全域性強制更新
init : [ //需要在初始載入的tab
{
type :'', //標籤頁的型別,有 main | info,預設為 info
title : '', //標題(可選),沒有則顯示網址
content: '', //html內容,如果設定此值,下面的URL設定則無效
url : '' //連結
},
{ /** 更多tab。。**/ }, //依次新增需要的頁面
{ /** 更多tab。。**/ }, //依次新增需要的頁面
],
nav : {
backgroundColor : '#f5f5f5', //預設nav-bar 背景顏色
class : '', //為nav新增class
draggable : true, //nav tab 可拖動選項
fixed : false, //固定標籤頭列表
layout : 'default', //有兩種模式,'default', 'classic'(所有隱藏tab都在下拉選單裡) 和 'simple'
maxTabs : 15, //最多tab數量。(main和editor不計算在內) 當為1時,整個標籤欄隱藏。main和editor分別只能有1個標籤。
maxTabTitleLength : 25, //tab標題的最大長度
showCloseOnHover : true, //當值為true,僅在滑鼠懸浮時顯示關閉按鈕。false時一直顯示
style : 'nav-tabs', //可以為nav-tabs 或 nav-pills
},
content : {
ajax : {
class : '', //為ajax tab-pane 新增class
error : function (htmlCallBack) {
//modify html and return
return htmlCallBack;
},
success : function (htmlCallBack) {
//modify html and return
return htmlCallBack;
}
},
iframe : {
class : '' //為iframe tab-pane 新增class
}
},
language : { //語言配置
nav : {
title : 'Tab', //預設的標籤頁名稱
dropdown : '<i class="fa fa-bars"></i>', //標籤欄的下拉選單名稱
showActivedTab : 'Show Activated Tab', //下拉選單的顯示啟用頁面
closeAllTabs : 'Close All Tabs', //下拉選單的關閉所有頁面
closeOtherTabs : 'Close Other Tabs', //下拉選單的關閉其他頁面
}
}
});
</script>
關於 content 的型別
標籤頁 content 的型別,有 main | info 。
- main頁放產品列表,使用者列表,郵件列表,這些需要id,且js操作容易混亂,故限制只能有1個。當然,你也可以僅僅main頁放網站概況,其他一律用info頁。只是容易衝突。
- info放產品詳情,使用者詳情,郵件詳情這些少id,以及js操作重複的頁面。
iframe注意事項
1.為了自適應iframe高度,請依照下面這個樣式新增CSS。 其中 .content-wrapper
是當前使用multitabs的wrapper。 .wrapper
為 .content-wrapper
的父層,需要將所有父層都新增 height: 100%
<style type="text/css">
body,
body.full-height-layout .wrapper,
html{
height: 100%;
}
body.full-height-layout .content-wrapper{ /*使用multitabs的wrapper*/
height: calc(100% - 140px) /*減去網頁header和footer的高度,AdminLTE的為140px*/
}
</style>
2.在iframe內觸發父document的Multitabs方法新建tab: (ifame 頁無須載入jquery)
<script>
parent.$(parent.document).data('multitabs').create({
iframe : true, //指定為iframe模式,當值為false的時候,為智慧模式,自動判斷(內網用ajax,外網用iframe)。預設為false。
title : 'open by iframe', //標題(可選),沒有則顯示網址
url : 'pages/index-2.html' //連結(必須),如為外鏈,強制為info頁
}, true); //true 則啟用新增的tab頁
</script>