欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

值得分享的Bootstrap Ace模板實(shí)現(xiàn)菜單和Tab頁(yè)效果

 更新時(shí)間:2015年12月30日 16:58:16   作者:懶得安分  
這篇文章主要為大家分享了基于Bootstrap Ace模板實(shí)現(xiàn)菜單和Tab頁(yè)效果,感興趣的小伙伴們可以參考一下

本文分享了項(xiàng)目中使用Ace模板的菜單樣式和基于iframe的Tab頁(yè)效果。

一、效果展示

折騰了好久,終于將菜單樣式和Tab頁(yè)的效果從項(xiàng)目中抽出來(lái)了。

1、初始加載出來(lái)的效果

2、展開(kāi)菜單(支持多級(jí)展開(kāi),后面代碼介紹)

3、點(diǎn)擊子菜單,以Tab頁(yè)的形式打開(kāi)對(duì)應(yīng)的頁(yè)面

4、支持菜單折疊

5、打開(kāi)的菜單過(guò)多時(shí)自動(dòng)換行顯示,折疊后自適應(yīng)

二、代碼示例

有現(xiàn)成的東西用很方便的,總的來(lái)說(shuō)Bootstrap Ace模板的功能還是比較強(qiáng)大的,并且支持各種終端設(shè)備。本文主要使用的它的菜單的效果,下面就來(lái)看看Ace模板菜單效果的實(shí)現(xiàn)代碼。

1、菜單效果
由于Ace是基于Bootstrap的,所以首先需要引用jquery和bootstrap組件,先來(lái)總的看看它需要引用哪些文件吧?! ?/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>

呵呵,看著還是挺多的吧。除了最后一個(gè)js文件(<script src="/Content/sidebar-menu/sidebar-menu.js"></script>)是博主自己封裝的,其他基本都是些組件需要的特性組件??纯错?yè)面上面要放哪些html標(biāo)簽:   

 <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>

再來(lái)看看sidebar-menu.js這個(gè)文件里面封裝的方法:

(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);

在頁(yè)面上面直接調(diào)用sidebar-menu的方法

$(function () {
  $('#menu').sidebarMenu({
  data: [{
   id: '1',
   text: '系統(tǒng)設(shè)置',
   icon: 'icon-cog',
   url: '',
   menus: [{
   id: '11',
   text: '編碼管理',
   icon: 'icon-glass',
   url: '/CodeType/Index'
   }]
  }, {
   id: '2',
   text: '基礎(chǔ)數(shù)據(jù)',
   icon: 'icon-leaf',
   url: '',
   menus: [{
   id: '21',
   text: '基礎(chǔ)特征',
   icon: 'icon-glass',
   url: '/BasicData/BasicFeature/Index'
   }, {
   id: '22',
   text: '特征管理',
   icon: 'icon-glass',
   url: '/BasicData/Features/Index'
   }, {
   id: '23',
   text: '物料維護(hù)',
   icon: 'icon-glass',
   url: '/Model/Index'
   }, {
   id: '24',
   text: '站點(diǎn)管理',
   icon: 'icon-glass',
   url: '/Station/Index'
   }]
  }, {
   id: '3',
   text: '權(quán)限管理',
   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: '部門(mén)管理',
   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: '訂單排產(chǎn)',
   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: '訂單導(dǎo)入',
   icon: 'icon-glass',
   url: '/Order/Import'
   }]
  }]
  });
 });

這里需要說(shuō)明的很重要的一點(diǎn)就是關(guān)于菜單前面的小圖標(biāo):

con的值為icon-user的時(shí)候,菜單上面就會(huì)顯示一個(gè)如圖的小圖標(biāo)。當(dāng)然一般情況下,菜單肯定是動(dòng)態(tài)加載的的,如果需要從后臺(tái)取數(shù)據(jù),可以直接調(diào)用此方法:

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

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

 <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">首頁(yè)</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這個(gè)文件里面封裝了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不存在,創(chuàng)建一個(gè)新的TAB
 if (!$("#" + id)[0]) {
 //固定TAB中IFRAME高度
 mainHeight = $(document.body).height() - 90;
 //創(chuàng)建新TAB的title
 title = '<li role="presentation" id="tab_' + id + '"><a href="#' + id + '" aria-controls="' + id + '" role="tab" data-toggle="tab">' + options.title;
 //是否允許關(guān)閉
 if (options.close) {
  title += ' <i class="glyphicon glyphicon-remove" tabclose="' + id + '"></i>';
 }
 title += '</a></li>';
 //是否指定TAB內(nèi)容
 if (options.content) {
  content = '<div role="tabpanel" class="tab-pane" id="' + id + '">' + options.content + '</div>';
 } else {//沒(méi)有內(nèi)容,使用IFRAME打開(kāi)鏈接
  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) {
 //如果關(guān)閉的是當(dāng)前激活的TAB,激活他的前一個(gè)TAB
 if ($("li.active").attr('id') == "tab_" + id) {
 $("#tab_" + id).prev().addClass('active');
 $("#" + id).prev().addClass('active');
 }
 //關(guān)閉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);
 });
});

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

如果大家還想深入學(xué)習(xí),可以點(diǎn)擊這里進(jìn)行學(xué)習(xí),再為大家附兩個(gè)精彩的專題:Bootstrap學(xué)習(xí)教程 Bootstrap實(shí)戰(zhàn)教程

以上就是bootstrap ace模板的菜單和Tab頁(yè)效果的展示,總的來(lái)說(shuō),基本的功能具備了,但菜單的樣式還有待調(diào)整,比如點(diǎn)擊某個(gè)菜單之后,點(diǎn)擊的菜單需要給一個(gè)選中的狀態(tài)。如果你的項(xiàng)目也是用的bootstrap風(fēng)格,研究下ace模板,可以使用起來(lái)試試。

相關(guān)文章

最新評(píng)論