亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

值得分享的Bootstrap Ace模板實現菜單和Tab頁效果

2019-11-20 10:53:33
字體:
來源:轉載
供稿:網友

本文分享了項目中使用Ace模板的菜單樣式和基于iframe的Tab頁效果。

一、效果展示

折騰了好久,終于將菜單樣式和Tab頁的效果從項目中抽出來了。

1、初始加載出來的效果

2、展開菜單(支持多級展開,后面代碼介紹)

3、點擊子菜單,以Tab頁的形式打開對應的頁面

4、支持菜單折疊

5、打開的菜單過多時自動換行顯示,折疊后自適應

二、代碼示例

有現成的東西用很方便的,總的來說Bootstrap Ace模板的功能還是比較強大的,并且支持各種終端設備。本文主要使用的它的菜單的效果,下面就來看看Ace模板菜單效果的實現代碼。

1、菜單效果
由于Ace是基于Bootstrap的,所以首先需要引用jquery和bootstrap組件,先來總的看看它需要引用哪些文件吧?! ?/p>

<script src="/Scripts/jquery-1.9.1.min.js"></script> <script src="/Content/bootstrap/js/bootstrap.min.js"></script> <link href="/Content/bootstrap/css/bootstrap.min.css" rel="stylesheet" /> <link href="/Content/font-awesome/css/font-awesome.min.css" rel="stylesheet" /> <link href="/Content/ace/css/ace-rtl.min.css" rel="stylesheet" /> <link href="/Content/ace/css/ace-skins.min.css" rel="stylesheet" /> <link href="/Content/sidebar-menu/sidebar-menu.css" rel="stylesheet"/> <script src="/Content/ace/js/ace-extra.min.js"></script> <script src="/Content/ace/js/ace.min.js"></script>  <script src="/Content/sidebar-menu/sidebar-menu.js"></script>

呵呵,看著還是挺多的吧。除了最后一個js文件(<script src="/Content/sidebar-menu/sidebar-menu.js"></script>)是博主自己封裝的,其他基本都是些組件需要的特性組件??纯错撁嫔厦嬉拍男﹉tml標簽:   

 <div class="sidebar" id="sidebar">  <ul class="nav nav-list" id="menu"></ul>  <div class="sidebar-collapse" id="sidebar-collapse">   <i class="icon-double-angle-left" data-icon1="icon-double-angle-left" data-icon2="icon-double-angle-right"></i>  </div>  </div>

再來看看sidebar-menu.js這個文件里面封裝的方法:

(function ($) { $.fn.sidebarMenu = function (options) { options = $.extend({}, $.fn.sidebarMenu.defaults, options || {}); var target = $(this); target.addClass('nav'); target.addClass('nav-list'); if (options.data) {  init(target, options.data); } else {  if (!options.url) return;  $.getJSON(options.url, options.param, function (data) {  init(target, data);  }); } var url = window.location.pathname; //menu = target.find("[href='" + url + "']"); //menu.parent().addClass('active'); //menu.parent().parentsUntil('.nav-list', 'li').addClass('active').addClass('open'); function init(target, data) {  $.each(data, function (i, item) {  var li = $('<li></li>');  var a = $('<a></a>');  var icon = $('<i></i>');  //icon.addClass('glyphicon');  icon.addClass(item.icon);  var text = $('<span></span>');  text.addClass('menu-text').text(item.text);  a.append(icon);  a.append(text);  if (item.menus&&item.menus.length>0) {   a.attr('href', '#');   a.addClass('dropdown-toggle');   var arrow = $('<b></b>');   arrow.addClass('arrow').addClass('icon-angle-down');   a.append(arrow);   li.append(a);   var menus = $('<ul></ul>');   menus.addClass('submenu');   init(menus, item.menus);   li.append(menus);  }  else {   var href = 'javascript:addTabs({id:/'' + item.id + '/',title: /'' + item.text + '/',close: true,url: /'' + item.url + '/'});';   a.attr('href', href);   //if (item.istab)   // a.attr('href', href);   //else {   // a.attr('href', item.url);   // a.attr('title', item.text);   // a.attr('target', '_blank')   //}   li.append(a);  }  target.append(li);  }); } } $.fn.sidebarMenu.defaults = { url: null, param: null, data: null };})(jQuery);

在頁面上面直接調用sidebar-menu的方法

$(function () {  $('#menu').sidebarMenu({  data: [{   id: '1',   text: '系統設置',   icon: 'icon-cog',   url: '',   menus: [{   id: '11',   text: '編碼管理',   icon: 'icon-glass',   url: '/CodeType/Index'   }]  }, {   id: '2',   text: '基礎數據',   icon: 'icon-leaf',   url: '',   menus: [{   id: '21',   text: '基礎特征',   icon: 'icon-glass',   url: '/BasicData/BasicFeature/Index'   }, {   id: '22',   text: '特征管理',   icon: 'icon-glass',   url: '/BasicData/Features/Index'   }, {   id: '23',   text: '物料維護',   icon: 'icon-glass',   url: '/Model/Index'   }, {   id: '24',   text: '站點管理',   icon: 'icon-glass',   url: '/Station/Index'   }]  }, {   id: '3',   text: '權限管理',   icon: 'icon-user',   url: '',   menus: [{   id: '31',   text: '用戶管理',   icon: 'icon-user',   url: '/SystemSetting/User'   }, {   id: '32',   text: '角色管理',   icon: 'icon-apple',   url: '/SystemSetting/Role'   }, {   id: '33',   text: '菜單管理',   icon: 'icon-list',   url: '/SystemSetting/Menu'   }, {   id: '34',   text: '部門管理',   icon: 'icon-glass',   url: '/SystemSetting/Department'   }]  }, {   id: '4',   text: '訂單管理',   icon: 'icon-envelope',   url: '',   menus: [{   id: '41',   text: '訂單查詢',   icon: 'icon-glass',   url: '/Order/Query'   }, {   id: '42',   text: '訂單排產',   icon: 'icon-glass',   url: '/Order/PLANTPRODUCT'   }, {   id: '43',   text: '訂單撤排',   icon: 'icon-glass',   url: '/Order/cancelPRODUCT'   }, {   id: '44',   text: '訂單HOLD',   icon: 'icon-glass',   url: '/Order/hold'   }, {   id: '45',   text: '訂單刪除',   icon: 'icon-glass',   url: '/Order/delete'   }, {   id: '47',   text: '訂單插單',   icon: 'icon-glass',   url: '/Order/insertorder'   }, {   id: '48',   text: '訂單導入',   icon: 'icon-glass',   url: '/Order/Import'   }]  }]  }); });

這里需要說明的很重要的一點就是關于菜單前面的小圖標:

con的值為icon-user的時候,菜單上面就會顯示一個如圖的小圖標。當然一般情況下,菜單肯定是動態加載的的,如果需要從后臺取數據,可以直接調用此方法:

$('#menu').sidebarMenu({ url: "/api/UserApi/GetMenuByUser/", param: { strUser: 'admin' } });
即可,呵呵,很簡單吧。

2、Tab頁效果
Tab頁的效果其實是和左邊菜單息息相關的,首先還是看看Tab頁效果的js引用。
 <script src="/Scripts/bootstrap-tab.js"></script>
頁面的html標簽:

 <div class="main-content"><div class="page-content">   <div class="row">   <div class="col-xs-12" style="padding-left:5px;">    <ul class="nav nav-tabs" role="tablist">    <li class="active"><a href="#Index" role="tab" data-toggle="tab">首頁</a></li>    </ul>    <div class="tab-content">    <div role="tabpanel" class="tab-pane active" id="Index">    </div>    </div>   </div>   </div>  </div>  </div>

bootstrap-tab.js這個文件里面封裝了addTabs方法

var addTabs = function (options) { //var rand = Math.random().toString(); //var id = rand.substring(rand.indexOf('.') + 1); var url = window.location.protocol + '//' + window.location.host; options.url = url + options.url; id = "tab_" + options.id; $(".active").removeClass("active"); //如果TAB不存在,創建一個新的TAB if (!$("#" + id)[0]) { //固定TAB中IFRAME高度 mainHeight = $(document.body).height() - 90; //創建新TAB的title title = '<li role="presentation" id="tab_' + id + '"><a href="#' + id + '" aria-controls="' + id + '" role="tab" data-toggle="tab">' + options.title; //是否允許關閉 if (options.close) {  title += ' <i class="glyphicon glyphicon-remove" tabclose="' + id + '"></i>'; } title += '</a></li>'; //是否指定TAB內容 if (options.content) {  content = '<div role="tabpanel" class="tab-pane" id="' + id + '">' + options.content + '</div>'; } else {//沒有內容,使用IFRAME打開鏈接  content = '<div role="tabpanel" class="tab-pane" id="' + id + '"><iframe src="' + options.url + '" width="100%" height="' + mainHeight +   '" frameborder="no" border="0" marginwidth="0" marginheight="0" scrolling="yes" allowtransparency="yes"></iframe></div>'; } //加入TABS $(".nav-tabs").append(title); $(".tab-content").append(content); } //激活TAB $("#tab_" + id).addClass('active'); $("#" + id).addClass("active");};var closeTab = function (id) { //如果關閉的是當前激活的TAB,激活他的前一個TAB if ($("li.active").attr('id') == "tab_" + id) { $("#tab_" + id).prev().addClass('active'); $("#" + id).prev().addClass('active'); } //關閉TAB $("#tab_" + id).remove(); $("#" + id).remove();};$(function () { mainHeight = $(document.body).height() - 45; $('.main-left,.main-right').height(mainHeight); $("[addtabs]").click(function () { addTabs({ id: $(this).attr("id"), title: $(this).attr('title'), close: true }); }); $(".nav-tabs").on("click", "[tabclose]", function (e) { id = $(this).attr("tabclose"); closeTab(id); });});

那么,在什么時候調用Addtabs方法呢?答案是注冊菜單click事件的時候,這部分代碼在前面sidebar-menu組件封裝的時候就有,可以看看上面。

如果大家還想深入學習,可以點擊這里進行學習,再為大家附兩個精彩的專題:Bootstrap學習教程 Bootstrap實戰教程

以上就是bootstrap ace模板的菜單和Tab頁效果的展示,總的來說,基本的功能具備了,但菜單的樣式還有待調整,比如點擊某個菜單之后,點擊的菜單需要給一個選中的狀態。如果你的項目也是用的bootstrap風格,研究下ace模板,可以使用起來試試。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内成人精品视频| 精品激情国产视频| 久久久av电影| xvideos成人免费中文版| 日韩欧美高清在线视频| 日韩国产激情在线| 久久噜噜噜精品国产亚洲综合| 国产www精品| 日韩欧美在线视频| 欧美日韩激情小视频| 亚洲精品一区中文字幕乱码| 性欧美暴力猛交69hd| 91免费看国产| 免费97视频在线精品国自产拍| 亚洲图片欧美日产| 色香阁99久久精品久久久| 一区二区三区视频免费| 欧美专区在线观看| 久久久噜噜噜久久中文字免| 狠狠干狠狠久久| 狠狠躁天天躁日日躁欧美| 国产一区二区三区网站| 中文字幕亚洲无线码a| 在线精品播放av| 国产69久久精品成人看| 国产91精品视频在线观看| 中文字幕在线亚洲| 91精品一区二区| 国产脚交av在线一区二区| 高清亚洲成在人网站天堂| 日韩中文字幕精品视频| 亚洲大胆人体av| 欧美国产高跟鞋裸体秀xxxhd| 亚洲一区二区三区在线免费观看| 欧美在线视频免费观看| 成人免费观看49www在线观看| 这里只有精品丝袜| 亚洲精品国产欧美| 亚洲欧美日韩精品| 国产精品网红福利| 亚洲一二三在线| 伊人久久久久久久久久久久久| 日本不卡免费高清视频| 久久天天躁狠狠躁老女人| 欧美午夜激情视频| 97视频在线观看视频免费视频| 久久久中文字幕| 国产成人精品视频在线| 精品国产精品自拍| 中日韩美女免费视频网址在线观看| 97人人爽人人喊人人模波多| 久久天天躁狠狠躁夜夜av| 国产色视频一区| 欧美激情久久久久| 国产精品美女www爽爽爽视频| 欧美成人午夜激情| 国产丝袜一区二区| 欧美精品少妇videofree| 国产成人精品一区二区| 亚洲国产成人在线视频| 97av在线影院| 亚洲色图17p| 麻豆一区二区在线观看| 午夜精品一区二区三区av| 亚洲精品视频久久| 欧美裸体xxxx极品少妇软件| 久久久亚洲精品视频| 欧美猛交ⅹxxx乱大交视频| 在线播放精品一区二区三区| 久久久综合免费视频| 欧美日韩一区二区免费视频| 中文.日本.精品| 少妇精69xxtheporn| 欧美日韩在线视频观看| 亚洲国产精品va在线| 亚洲一区二区三区在线免费观看| 欧美另类极品videosbest最新版本| 欧美黄色三级网站| 欧美成人精品在线观看| 日韩欧美亚洲范冰冰与中字| 欧美理论电影网| 亚洲精品欧美一区二区三区| 日韩精品在线观| 中文字幕av一区二区| 欧美日本国产在线| 亚洲精品美女网站| 日韩最新免费不卡| 久久精品视频在线| 91国内在线视频| 日韩av在线免费看| 精品人伦一区二区三区蜜桃网站| 精品久久久国产精品999| 国产91色在线|| 欧美日韩高清在线观看| 日本视频久久久| 亚洲www在线观看| 久热精品视频在线| 亚洲国产欧美一区二区三区同亚洲| 日韩免费电影在线观看| 一区二区三区四区精品| 91麻豆桃色免费看| 美女性感视频久久久| 日韩网站在线观看| 国产91色在线| 97香蕉久久夜色精品国产| 久久久久久国产精品| 91在线中文字幕| 国产男人精品视频| 国产视频一区在线| 欧美成人中文字幕| 九色精品免费永久在线| 久久久电影免费观看完整版| 精品国产乱码久久久久久虫虫漫画| 成人午夜高潮视频| 国产精品久久久久999| 色婷婷综合久久久久中文字幕1| 高跟丝袜一区二区三区| 超薄丝袜一区二区| 亚洲jizzjizz日本少妇| 欧美大码xxxx| 在线视频亚洲欧美| 九九热视频这里只有精品| 91精品国产综合久久久久久蜜臀| 国产成人97精品免费看片| 日韩美女av在线| 琪琪亚洲精品午夜在线| 日韩在线视频免费观看| 亚洲第一综合天堂另类专| 欧美高清性猛交| 色偷偷亚洲男人天堂| 一本色道久久综合狠狠躁篇的优点| 亚洲一区二区三区四区视频| 亚洲第一综合天堂另类专| 欧美激情一二区| 亚洲天堂色网站| 日韩欧美一区二区三区| 久久精品亚洲94久久精品| 国产日本欧美视频| 日韩一区av在线| 中文字幕九色91在线| 国产91九色视频| 亚洲第一级黄色片| 久久精品国产v日韩v亚洲| 伊人久久综合97精品| 亚洲性xxxx| 91久久久久久久久久久久久| 亚洲精品国产精品自产a区红杏吧| 久久久久久久成人| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲级视频在线观看免费1级| 久久五月天色综合| 亚洲国产精品久久精品怡红院| 午夜精品一区二区三区在线| 欧美黑人狂野猛交老妇| 日本aⅴ大伊香蕉精品视频| 国产精品∨欧美精品v日韩精品| 九九视频直播综合网| 色综合久久中文字幕综合网小说| 欧美成年人在线观看| 国产精品综合久久久| 亚洲成人三级在线| 在线成人一区二区| 精品免费在线观看| 国产精品wwwwww|