如何在 AdminLTE 中实现动态菜单高亮效果

在开发后台管理系统时,菜单的高亮效果是一个很常见的需求。它可以帮助用户快速识别当前所在的页面,提升用户体验。AdminLTE 是一个流行的后台管理模板,它提供了丰富的 UI 组件和功能,但默认情况下,菜单的高亮效果需要我们自己实现。

下面是一个简单的 JavaScript 代码示例,用于在 AdminLTE3 中实现动态菜单高亮效果。这段代码会根据当前页面的 URL,自动为对应的菜单项添加高亮样式。

<script>
	$(function () {
		/** add active class and stay opened when selected */
		var url = window.location;
		// for sidebar menu entirely but not cover treeview
		$('ul.nav-sidebar a').filter(function () {
			return this.href == url;
		}).addClass('active');
		// for treeview
		$('ul.nav-treeview a').filter(function () {
			return this.href == url;
		}).parentsUntil(".nav-sidebar > .nav-treeview").addClass('menu-open').prev('a').addClass('active');
	});
</script>

代码解析

  1. 获取当前 URL:通过 window.location 获取当前页面的 URL。
  2. 普通菜单高亮:通过 ul.nav-sidebar a 选择器找到所有侧边栏菜单项,然后使用 filter 方法筛选出与当前 URL 匹配的菜单项,并为其添加 active 类。
  3. 树形菜单高亮:对于树形菜单(通常是有子菜单的项),代码会先找到匹配的菜单项,然后向上查找父级元素,添加 menu-open 类以展开菜单,同时为父级链接添加 active 类。

如果你用的是 AdminLTE2,那么可以使用下面的代码:

<script>
    $(document).ready(function () {
        /** add active class and stay opened when selected */
        var url = window.location;
        // for sidebar menu entirely but not cover treeview
        $('ul.sidebar-menu a').filter(function () {
            return this.href == url;
        }).parent().siblings().removeClass('active').end().addClass('active');
        // for treeview
        $('ul.treeview-menu a').filter(function () {
            return this.href == url;
        }).parentsUntil(".sidebar-menu > .treeview-menu").siblings().removeClass('active').end().addClass('active');
    })
</script>

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注