mirror of https://github.com/layui/layui
				
				
				
			
		
			
				
	
	
	
		
			11 KiB
		
	
	
	
	
			
		
		
	
	
			11 KiB
		
	
	
	
	
| title | toc | 
|---|---|
| 导航菜单 nav | true | 
导航菜单
导航菜单包含水平导航和垂直导航, 在
2.x版本中,nav组件属于element模块的子集。
水平导航
一般用于页面头部菜单。样式规则如下:
- 通过 
class="layui-nav"设置导航容器 - 通过 
class="layui-nav-item"设置导航菜单项- 追加 
className为layui-this可设置菜单选中项 
 - 追加 
 - 通过 
class="layui-nav-child"设置导航子菜单项- 追加 
className为layui-nav-child-c和layui-nav-child-r可设置子菜单居中和向右对齐 
 - 追加 
 
常规用法
  <ul class="layui-nav">
  <li class="layui-nav-item layui-this"><a href="">选中</a></li>
  <li class="layui-nav-item">
    <a href="javascript:;">常规</a>
  </li>
  <li class="layui-nav-item"><a href="">导航</a></li>
  <li class="layui-nav-item">
    <a href="javascript:;">子级</a>
    <dl class="layui-nav-child">
      <dd><a href="">菜单1</a></dd>
      <dd><a href="">菜单2</a></dd>
      <dd><a href="">菜单3</a></dd>
    </dl>
  </li>
  <li class="layui-nav-item">
    <a href="javascript:;">选项</a>
    <dl class="layui-nav-child">
      <dd><a href="">选项1</a></dd>
      <dd class="layui-this"><a href="">选项2</a></dd>
      <dd><a href="">选项3</a></dd>
    </dl>
  </li>
  <li class="layui-nav-item"><a href="">演示</a></li>
</ul>
<!-- import layui -->
  
备注:滑块效果仅跟随不存在子菜单的菜单项。
加入徽章等元素
  <ul class="layui-nav">
  <li class="layui-nav-item">
    <a href="">带徽章<span class="layui-badge">9</span></a>
  </li>
  <li class="layui-nav-item">
    <a href="">小圆点<span class="layui-badge-dot"></span></a>
  </li>
  <li class="layui-nav-item" lay-unselect>
    <a href="javascript:;">
      <img src="https://unpkg.com/outeres@0.0.10/demo/avatar/1.jpg" class="layui-nav-img">
    </a>
    <dl class="layui-nav-child">
      <dd><a href="javascript:;">子级菜单</a></dd>
      <dd><a href="javascript:;">横线隔断</a></dd>
      <hr>
      <dd style="text-align: center;"><a href="">退出</a></dd>
    </dl>
  </li>
</ul>
<!-- import layui -->
  
导航主题
给导航容器追加任意背景色 class,内置背景色参考:#背景色公共类
  <ul class="layui-nav layui-bg-gray">
  <li class="layui-nav-item"><a href="">浅色导航</a></li>
  <li class="layui-nav-item"><a href="">菜单1</a></li>
  <li class="layui-nav-item"><a href="">菜单2</a></li>
  <li class="layui-nav-item">
    <a href="javascript:;">更多</a>
    <dl class="layui-nav-child">
      <dd><a href="">选项1</a></dd>
      <dd><a href="">选项2</a></dd>
      <dd><a href="">选项3</a></dd>
    </dl>
  </li>
  <li class="layui-nav-item"><a href="">菜单3</a></li>
</ul>
 
<br>
 
<ul class="layui-nav layui-bg-cyan">
  <li class="layui-nav-item"><a href="">藏青导航</a></li>
  <li class="layui-nav-item"><a href="">菜单1</a></li>
  <li class="layui-nav-item"><a href="">菜单2</a></li>
  <li class="layui-nav-item">
    <a href="javascript:;">更多</a>
    <dl class="layui-nav-child">
      <dd><a href="">选项1</a></dd>
      <dd><a href="">选项2</a></dd>
      <dd><a href="">选项3</a></dd>
    </dl>
  </li>
  <li class="layui-nav-item"><a href="">菜单3</a></li>
</ul>
<br>
 
<ul class="layui-nav layui-bg-green" lay-bar="disabled">
  <li class="layui-nav-item"><a href="">墨绿导航</a></li>
  <li class="layui-nav-item"><a href="">菜单1</a></li>
  <li class="layui-nav-item"><a href="">菜单2</a></li>
  <li class="layui-nav-item">
    <a href="javascript:;">更多</a>
    <dl class="layui-nav-child">
      <dd><a href="">选项1</a></dd>
      <dd><a href="">选项2</a></dd>
      <dd><a href="">选项3</a></dd>
    </dl>
  </li>
  <li class="layui-nav-item"><a href="">菜单3</a></li>
</ul>
<br>
 
<ul class="layui-nav layui-bg-blue" lay-bar="disabled">
  <li class="layui-nav-item"><a href="">蓝色导航</a></li>
  <li class="layui-nav-item"><a href="">菜单1</a></li>
  <li class="layui-nav-item"><a href="">菜单2</a></li>
  <li class="layui-nav-item">
    <a href="javascript:;">更多</a>
    <dl class="layui-nav-child">
      <dd><a href="">选项1</a></dd>
      <dd><a href="">选项2</a></dd>
      <dd><a href="">选项3</a></dd>
    </dl>
  </li>
  <li class="layui-nav-item"><a href="">菜单3</a></li>
</ul>
<!-- import layui -->
  
垂直导航
一般用于左侧侧边菜单。样式规则如下:
- 在水平导航的 
class规则上,通过设置class="layui-nav layui-nav-tree"定义垂直导航容器。 - 通过 
class="layui-nav-itemed"设置父菜单项为展开状态 - 通过给导航容器追加 
class="layui-nav-side"可设置侧边垂直导航 - 其余结构及填充内容与水平导航完全相同
 
  <ul class="layui-nav layui-nav-tree">
  <li class="layui-nav-item layui-nav-itemed">
    <a href="javascript:;">默认展开</a>
    <dl class="layui-nav-child">
      <dd><a href="javascript:;">选项1</a></dd>
      <dd><a href="javascript:;">选项2</a></dd>
      <dd><a href="javascript:;">选项3</a></dd>
    </dl>
  </li>
  <li class="layui-nav-item">
    <a href="javascript:;">默认收缩</a>
    <dl class="layui-nav-child">
      <dd><a href="javascript:;">选项1</a></dd>
      <dd><a href="javascript:;">选项2</a></dd>
      <dd><a href="javascript:;">选项3</a></dd>
    </dl>
  </li>
  <li class="layui-nav-item"><a href="javascript:;">菜单1</a></li>
  <li class="layui-nav-item"><a href="javascript:;">菜单2</a></li>
  <li class="layui-nav-item"><a href="javascript:;">菜单3</a></li>
</ul>
<!-- import layui -->
  
侧边垂直导航
  {{- d.include("/nav/examples/side.md") }}
  
API
| API | 描述 | 
|---|---|
| var element = layui.element | 获得 element 模块。 | 
| element.render('nav', 'filter') | 导航菜单 nav 组件渲染。 | 
渲染
element.render('nav', filter);
- 参数 
'nav'是渲染导航的固定值 - 参数 
filter: 对应导航容器lay-filter的属性值 
nav 组件会在元素加载完毕后,自动对导航完成一次渲染,因此该方法主要用于对动态插入的导航元素的初始化渲染。
<div id="test"></div>
<!-- import layui -->
<script>
layui.use(function(){
  var element = layui.element;
  var $ = layui.$;
  // 动态插入导航元素
  $('#test').html(`
    <div class="layui-nav" lay-filter="demo-filter-nav">
      <li class="layui-nav-item layui-this"><a href="">选中</a></li>
      <li class="layui-nav-item"><a href="">菜单</a></li>
      <!-- … -->
    </div>
  `);
  // 渲染导航组件
  element.render('nav', 'demo-filter-nav');
});
</script>
属性
| 属性 | 描述 | 
|---|---|
| lay-shrink | 导航容器属性。展开子菜单时,是否收缩兄弟节点已展开的子菜单。可选值:
  | 
| lay-bar | 导航容器属性。用于禁用滑块跟随功能。如:<div class="layui-nav" lay-bar="disabled">…</div> | 
| lay-unselect | 导航菜单项属性。 设置后,点击对应菜单项时,不会出现选中效果。 | 
事件
element.on('nav(filter)', callback)
- 参数 
nav(filter)是一个特定结构。nav为导航事件固定值;filter为导航容器属性lay-filter对应的值。
 - 参数 
callback为事件执行时的回调函数,并返回一个object类型的参数。 
当点击导航父级菜单和二级菜单时触发。示例:
  <div class="layui-nav" lay-filter="demo-filter-nav">
  <li class="layui-nav-item"><a href="javascript:;">菜单1</a></li>
  <li class="layui-nav-item"><a href="javascript:;">菜单2</a></li>
</div>
<!-- import layui -->
<script>
layui.use(function(){
  var element = layui.element;
  var layer = layui.layer;
  
  // 导航点击事件
  element.on('nav(demo-filter-nav)', function(elem){
    console.log(elem); // 得到当前点击的元素 jQuery 对象
    layer.msg(elem.text());
  });
});
</script>
  
面包屑导航
面包屑导航主要用于指示当前页面所处的位置,并能返回到上级页面。
<h3>默认面包屑</h3> <span class="layui-breadcrumb"> <a href="">首页</a> <a href="">演示</a> <a><cite>导航元素</cite></a> </span> <h3>自定义分隔符</h3> <span class="layui-breadcrumb" lay-separator=">"> <a href="">首页</a> <a href="">国际新闻</a> <a href="">亚太地区</a> <a><cite>正文</cite></a> </span> <h3>门户频道</h3> <span class="layui-breadcrumb" lay-separator="|"> <a href="">娱乐</a> <a href="">八卦</a> <a href="">体育</a> <a href="">搞笑</a> <a href="">视频</a> <a href="">游戏</a> <a href="">综艺</a> </span> <!-- import layui -->
面包屑导航渲染
element.render('breadcrumb', filter);
- 参数 
'breadcrumb'是渲染面包屑导航的固定值 - 参数 
filter: 对应面包屑导航容器lay-filter的属性值 
该方法主要用于对动态插入的面包屑导航的初始化渲染,用法同上述导航菜单。