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

來源:互聯網
上載者:User

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

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

一、效果展示

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

1、初始載入出來的效果

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

3、點擊子功能表,以Tab頁的形式開啟對應的頁面

4、支援菜單摺疊

5、開啟的菜單過多時自動換行顯示,摺疊後自適應

二、程式碼範例
有現成的東西用很方便的,總的來說Bootstrap Ace模板的功能還是比較強大的,並且支援各種終端裝置。本文主要使用的它的菜單的效果,下面就來看看Ace模板菜單效果的實現代碼。

1、菜單效果
由於Ace是基於Bootstrap的,所以首先需要引用jquery和bootstrap組件,先來總的看看它需要引用哪些檔案吧。  

<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>)是博主自己封裝的,其他基本都是些組件需要的特性組件。看看頁面上面要放哪些html標籤:   

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

您可能感興趣的文章:
  • bootstrap table 伺服器端分頁例子分享
  • 學習Bootstrap組件之下拉式功能表
  • Bootstrap每天必學之下拉式功能表
  • 詳解基於Bootstrap扁平化的後台架構Ace

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.