ACE Admin 模板实现sidebar菜单联动tabs页签

另一篇:LTE Admin 模板实现sidebar菜单联动tabs页签(你值得拥有)

说在前面的话:
        该组件主要使用ace admin实现Tab页联动sidebar。实现的目标是:
            1、不改动ace admin的模板框架(Bootstrap v3.3.6);
            2、tab页的加载默认使用ajax,get方式,详见(bootstrap.addtabs.js);不用iframe;
            3、sidebar实现蓝色图标点击选中效果;
            4、sidebar标题与tab页的联动,tab页与sidebar的联动可实现;
            5、tab标签页的动态滚动(左滚、右滚,左右滚动一屏);
            6、右键菜单(关闭左侧、右侧、其他,全部关闭,刷新),全屏

一、效果展示
 




二、代码部分

新增JS文件:bootstrap.addtabs.js,bootstrap.js(压缩后的文件名为bootstrap.min.js)

新增CSS文件:bootstrap.addtabs.css

index.html引入对应JS、CSS文件

<!--[if lte IE 9]>
<link rel="stylesheet" href="assets/css/ace-part2.min.css" class="ace-main-stylesheet" />
<![endif]-->
<link rel="stylesheet" href="assets/css/ace-skins.min.css" />
<link rel="stylesheet" href="assets/css/ace-rtl.min.css" />
<!-- 这里引入bootstrap.addtabs.css -->
<link rel="stylesheet" type="text/css" href="assets/css/bootstrap.addtabs.css"/>
<script type="text/javascript">
if('ontouchstart' in document.documentElement) document.write("<script src='assets/js/jquery.mobile.custom.min.js'>"+"<"+"/script>");
</script>
<!-- 这里原先引入的是压缩后的bootstrap.min.js,修改了源码,引入未压缩的 -->
<script src="assets/js/bootstrap.js"></script>
<!-- 引入bootstrap.addtabs.js -->
<script type="text/javascript" src="assets/js/bootstrap.addtabs.js" ></script>

index.html页面结构未变,更改页面元素的样式,其中sidebar部分修改微小,大致如下
<ul class="submenu"> 下的
<a href="tables.html"> 改为
<a class="list-group-item" data-addtab="jqgrid" data-url="mailbox.txt">

<li class="">
	<a href="#" class="dropdown-toggle">
		<i class="menu-icon fa fa-list"></i>
		<span class="menu-text"> Tables </span>

		<b class="arrow fa fa-angle-down"></b>
	</a>

	<b class="arrow"></b>

	<ul class="submenu">
		<li class="">
			<a class="list-group-item" data-addtab="simdyn" data-url="mailbox.txt">
				<i class="menu-icon fa fa-caret-right"></i>
				Simple &amp; Dynamic
			</a>

			<b class="arrow"></b>
		</li>

		<li class="">
			<a class="list-group-item" data-addtab="jqgrid" data-url="mailbox.txt">
				<i class="menu-icon fa fa-caret-right"></i>
				jqGrid plugin
			</a>

			<b class="arrow"></b>
		</li>
	</ul>
</li>

其中a标签还可以添加如下属性,分别对应下面几种情况

<a class="list-group-item" data-addtab="simdyn" data-url="mailbox.txt">
// 指定tab页内容
data-content="Customize the content"
// 使用ajax
data-ajax="true"
// 设置tab页签标题
data-title="Customize the title"
// 指定在哪个tab页内容中显示
data-target="#tabs2"

<div class="main-content-inner"> 标签的代码替换成

<div class="main-content">
    <div class="main-content-inner content-wrapper" id="content-wrapper">
        <!-- nav tabs -->
        <div class="content-tabs">
            <button class="roll-nav roll-left tabLeft" role="rollleft">
                <a href="javascript:void(0);" >
	            <i class="glyphicon glyphicon-fast-backward"></i>
        	</a>
            </button>
	    <nav class="page-tabs menuTabs tab-ui-menu" id="tab-menu">
	        <ul class="page-tabs-content nav nav-tabs" style="margin-left: 0px;">
		    <li role="presentation" id="tab_tab_home1" aria-url="example/ajax/mailbox.txt" aria-ajax="false" class="menu_tab active">
		        <a href="#tab_home1" aria-controls="tab_home1" role="tab" data-toggle="tab">欢迎页</a>
			<i class="close-tab glyphicon glyphicon-remove" style="display: none;"></i>
		    </li>
		</ul>
	    </nav>
	    <button class="roll-nav roll-right tabRight" role="roleright">
	        <a href="javascript:void(0);">
		    <i class="glyphicon glyphicon-fast-forward"></i>
		</a>
	    </button>
	    <button class="roll-nav roll-right fullscreen" role = "fullscreen">
		<i class="glyphicon glyphicon-fullscreen"></i>
	    </button>
        </div>
        <!-- Tab panes -->
        <div class="tab-content">
            <div class="tab-pane content active" id="tab_home1" role="tabpanel">
                I'm a homepage.
            </div>
        </div>
    </div>
</div>

配合sidebar点击事件即可产生效果展示中效果
 

// 给nav-list列表中有data-addtab属性的a标签绑定点击事件
$(settings.monitor).on('click', '[data-addtab]', function() {

	// sidebar蓝色图标选中效果代码
	$('.nav-list').find('.active').removeClass('active');
	$(this).parents("li").addClass('active').siblings('li').removeClass('active');
	$(this).closest("li").addClass('active').siblings().removeClass('active');

	_click($(this));
	_scrollToTab(true, (this));
});

三、滚动代码(向左边滚动)

_scrollTabLeft = function() {
	var marginLeftVal = Math.abs(parseInt($('.page-tabs-content').css('margin-left')));
	var tabOuterWidth = _calSumWidth($(".content-tabs").children().not(".menuTabs"));
	var visibleWidth = $(".content-tabs").outerWidth(true) - tabOuterWidth;
	var scrollVal = 0;
	if($(".page-tabs-content").width() < visibleWidth) {
		return false;
	} else {
		var tabElement = $(".menu_tab:first");
		var offsetVal = 0;
		while((offsetVal + $(tabElement).outerWidth(true)) <= marginLeftVal) {
			offsetVal += $(tabElement).outerWidth(true);
			tabElement = $(tabElement).next();
		}
		offsetVal = 0;
		if(_calSumWidth($(tabElement).prevAll()) > visibleWidth) {
			while((offsetVal + $(tabElement).outerWidth(true)) < (visibleWidth) && tabElement.length > 0) {
				offsetVal += $(tabElement).outerWidth(true);
				tabElement = $(tabElement).prev();
			}
			scrollVal = _calSumWidth($(tabElement).prevAll());
		}
	}
	$('.page-tabs-content').animate({
		marginLeft: 0 - scrollVal + 'px'
	}, "fast");
};

四、右键代码(部分)

//关闭右侧
$('ul.rightMenu a[data-right=remove-right]').on('click', function() {
	var tab_id = $(this).parent('ul').attr("aria-controls");
	$('#tab_' + tab_id).nextUntil().each(function() {
		var id = $(this).attr('id');
		if(id && id != 'tab_' + tab_id) {
			$.addtabs.close({
				"id": $(this).children('a').attr('aria-controls')
			});
		}
	});
	_scrollToTab(false, $('#tab_' + tab_id))
	// $.addtabs.drop();
});

//关闭全部
$('ul.rightMenu a[data-right=remove-all]').on('click', function() {
	var tab_id = $(this).parent('ul').attr("aria-controls");
	$.addtabs.closeAll(null);
});

$.addtabs.closeAll = function(target) {
	if(typeof target == 'string') {
		target = $('body').find(target);
	} else {
		target = $('body').find(settings.target)
	}

	$.each(target.find('li[id]'), function() {
		var id = $(this).children('a').attr('aria-controls');
		$("#tab_" + id).remove();
		$("#" + id).remove();
	});
};

五、Ace Admin 简介

Ace Admin官网 Dashboard - Ace Admin

Ace Admin Git  GitHub - bopoda/ace: Twitter bootstrap 3 admin template

(1)目录结构:简洁明了

(2)index.html入口页面

(3)主要布局

1)Navbar导航栏
2)Sidebar侧边栏
3)Breadcrumbs面包屑(在“主要内容”中)
4)Page conten页面内容(在“主要内容”中)
5)Settings box设置框(在“页面内容”内)
6)  Footer 

#### 相关源码:希望各位看官达人多多支持
(9.99元——微信打赏,一年365天)

打赏后评论留言或者备注留言——已支持,你的邮箱地址,模板名称,

例如:已支持,xxxx@qq.com,ace,将及时发送源码
扫码赞赏

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 80
    评论
很全面的Ace Admin1.3官方文档,包含有最全面的组件及例子,适合急需使用该技术开发的人。 响应式Bootstrap网站后台管理系统模板ace admin,非常不错的轻量级易用的admin后台管理系统,基于Bootstrap3,拥有强大的功能组件以及UI组件,基本能满足后台管理系统的需求,而且能根据不同设备适配显示,而且还有四个主题可以切换。 网图标全采用FontAwesome,除Bootstrap,jQuery UI使用到的第三方插件有: jQuery 2.0.3 jQuery UI 1.10.3 (Custom Build) Twitter Bootstrap 3.0.0 FontAwesome 3.2.1 Google "Open Sans" Font jQuery Flot Charts 0.8.1 jQuery Sparklines 2.1.2 Easy Pie Chart 1.2.5 jQuery Knob 1.2.0 jQuery Validate 1.11.1 FuelUX 2.3.0 (Spinner & Wizard & Treeview) FullCalendar 1.6.4 jQuery ColorBox 1.4.27 jQuery dataTables 1.9.4 jQuery Chosen 1.0 jQuery Masked Input 1.3.1 jQuery Input Limiter 1.3.1 jQuery AutoSize 1.17.7 Bootstrap Colorpicker Bootstrap Datepicker Bootstrap Timepicker v0.2.3 Bootstrap DateRange Picker 1.2 Bootbox.js 4.0.0 jQuery Gritter 1.7.4 jQuery slimScroll 1.1.1 Spin.js 1.3.0 jQuery UI Touch Punch 0.2.2 Google Code Prettify ExplorerCanvas Mindmup Wysiwyg Editor Toopay Markdown Editor 1.1.4 X-editable 1.4.6 Select2 3.4.2 Bootstrap Tags 2.2.5 jQuery Mobile 1.3.2 (Custom Build) jqGrid 4.5.2 Dropzone.js 3.0 Nestable lists plugin 浏览器兼容: Firefox 5+ Google Chrome 14+ Internet Explorer 8 Internet Explorer 9 Opera 11 Safari 5 Bootstrap兼容: Bootstrap 2.2.x Bootstrap 2.3.x Bootstrap 3.0.x ace admin
评论 80
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dkjhl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值