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,将及时发送源码
扫码赞赏

评论 80
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

dkjhl

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

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

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

打赏作者

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

抵扣说明:

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

余额充值