Skip to content

Menu 导航菜单

为网站提供导航功能的菜单。

引入

html
<script type="module">
  import "./node_modules/easy-component-ui/dist/components/ea-menu.js";
</script>
js
import "easy-component-ui/ea-menu";

自定义样式

移步到 CSS PartCSS Custom Properties

顶栏

适用广泛的基础用法。

TIP

导航菜单默认为垂直模式,通过 mode 属性可以使导航菜单变更为水平模式。另外,在菜单中通过 submenu 组件可以生成二级菜单。Menu 还提供了 background-colortext-coloractive-text-color,分别用于设置菜单的背景色、菜单的文字颜色和当前激活菜单的文字颜色。

Processing CenterWorkspaceitem oneitem twoitem threeitem fouritem oneitem twoitem threeInfoOrdersProcessing CenterWorkspaceitem oneitem twoitem threeitem fouritem oneitem twoitem threeInfoOrders
查看代码
html
<div class="demo">
  <!-- 白色顶栏 -->
  <ea-menu default-active="1" class="ea-menu-demo" mode="horizontal">
    <ea-menu-item index="1">Processing Center</ea-menu-item>
    <ea-sub-menu index="2">
      <span slot="title">Workspace</span>
      <ea-menu-item index="2-1">item one</ea-menu-item>
      <ea-menu-item index="2-2">item two</ea-menu-item>
      <ea-menu-item index="2-3">item three</ea-menu-item>
      <ea-sub-menu index="2-4">
        <span slot="title">item four</span>
        <ea-menu-item index="2-4-1">item one</ea-menu-item>
        <ea-menu-item index="2-4-2">item two</ea-menu-item>
        <ea-menu-item index="2-4-3">item three</ea-menu-item>
      </ea-sub-menu>
    </ea-sub-menu>
    <ea-menu-item index="3" disabled>Info</ea-menu-item>
    <ea-menu-item index="4">Orders</ea-menu-item>
  </ea-menu>
  <!-- 黑色顶栏 -->
  <ea-menu
    default-active="1"
    class="ea-menu-demo"
    mode="horizontal"
    background-color="#545c64"
    text-color="#fff"
    active-text-color="#ffd04b"
    style="--ea-menu-hover-bg-color: rgb(67, 74, 80)"
  >
    <ea-menu-item index="1">Processing Center</ea-menu-item>
    <ea-sub-menu index="2">
      <span slot="title">Workspace</span>
      <ea-menu-item index="2-1">item one</ea-menu-item>
      <ea-menu-item index="2-2">item two</ea-menu-item>
      <ea-menu-item index="2-3">item three</ea-menu-item>
      <ea-sub-menu index="2-4">
        <span slot="title">item four</span>
        <ea-menu-item index="2-4-1">item one</ea-menu-item>
        <ea-menu-item index="2-4-2">item two</ea-menu-item>
        <ea-menu-item index="2-4-3">item three</ea-menu-item>
      </ea-sub-menu>
    </ea-sub-menu>
    <ea-menu-item index="3" disabled>Info</ea-menu-item>
    <ea-menu-item index="4">Orders</ea-menu-item>
  </ea-menu>
</div>

左右

您可以将菜单项放置在左边或右边。

EasyUI logoProcessing CenterWorkspaceitem oneitem twoitem threeitem fouritem oneitem twoitem three
查看代码
html
<div class="demo">
  <ea-menu default-active="1" class="ea-menu-demo" mode="horizontal">
    <ea-menu-item index="0" style="margin-right: auto">
      <img
        style="width: 100px"
        src="https://raw.githubusercontent.com/LuminaQAQ/ea-ui-component/refs/heads/master/logo.png"
        alt="EasyUI logo"
      />
    </ea-menu-item>
    <ea-menu-item index="1">Processing Center</ea-menu-item>
    <ea-sub-menu index="2">
      <span slot="title">Workspace</span>
      <ea-menu-item index="2-1">item one</ea-menu-item>
      <ea-menu-item index="2-2">item two</ea-menu-item>
      <ea-menu-item index="2-3">item three</ea-menu-item>
      <ea-sub-menu index="2-4">
        <span slot="title">item four</span>
        <ea-menu-item index="2-4-1">item one</ea-menu-item>
        <ea-menu-item index="2-4-2">item two</ea-menu-item>
        <ea-menu-item index="2-4-3">item three</ea-menu-item>
      </ea-sub-menu>
    </ea-sub-menu>
  </ea-menu>
</div>

侧栏

垂直菜单,可内嵌子菜单。通过使用 ea-menu-item-group 组件可以实现菜单进行分组。

Navigator Oneitem oneitem twoitem threeitem fouritem oneNavigator TwoNavigator ThreeNavigator FourNavigator Oneitem oneitem twoitem threeitem fouritem oneNavigator TwoNavigator ThreeNavigator Four
查看代码
html
<div class="demo">
  <!-- 白色侧栏 -->
  <ea-menu
    default-active="2"
    class="ea-menu-vertical-demo"
    mode="vertical"
    style="width: 250px; min-height: 600px; border-right: 1px solid #ccc;"
  >
    <ea-sub-menu index="1">
      <span slot="title">
        <ea-icon name="location-dot"></ea-icon>
        <span>Navigator One</span>
      </span>
      <ea-menu-item-group group-title="Group One">
        <ea-menu-item index="1-1">item one</ea-menu-item>
        <ea-menu-item index="1-2">item two</ea-menu-item>
      </ea-menu-item-group>
      <ea-menu-item-group group-title="Group Two">
        <ea-menu-item index="1-3">item three</ea-menu-item>
      </ea-menu-item-group>
      <ea-sub-menu index="1-4">
        <span slot="title">
          <span>item four</span>
        </span>
        <ea-menu-item index="1-4-1">item one</ea-menu-item>
      </ea-sub-menu>
    </ea-sub-menu>
    <ea-menu-item index="2">
      <ea-icon name="table-cells-large"></ea-icon>
      <span>Navigator Two</span>
    </ea-menu-item>
    <ea-menu-item index="3" disabled>
      <ea-icon name="table"></ea-icon>
      <span>Navigator Three</span>
    </ea-menu-item>
    <ea-menu-item index="4">
      <ea-icon name="gear"></ea-icon>
      <span>Navigator Four</span>
    </ea-menu-item>
  </ea-menu>
  <!-- 黑色侧栏 -->
  <ea-menu
    active-text-color="#ffd04b"
    background-color="#545c64"
    class="ea-menu-vertical-demo"
    default-active="2"
    mode="vertical"
    text-color="#fff"
    style="--ea-menu-hover-bg-color: rgb(67, 74, 80); width: 250px;  min-height: 600px;"
  >
    <ea-sub-menu index="1">
      <span slot="title">
        <ea-icon name="location-dot"></ea-icon>
        <span>Navigator One</span>
      </span>
      <ea-menu-item-group group-title="Group One">
        <ea-menu-item index="1-1">item one</ea-menu-item>
        <ea-menu-item index="1-2">item two</ea-menu-item>
      </ea-menu-item-group>
      <ea-menu-item-group group-title="Group Two">
        <ea-menu-item index="1-3">item three</ea-menu-item>
      </ea-menu-item-group>
      <ea-sub-menu index="1-4">
        <span slot="title">
          <span>item four</span>
        </span>
        <ea-menu-item index="1-4-1">item one</ea-menu-item>
      </ea-sub-menu>
    </ea-sub-menu>
    <ea-menu-item index="2">
      <ea-icon name="table-cells-large"></ea-icon>
      <span>Navigator Two</span>
    </ea-menu-item>
    <ea-menu-item index="3" disabled>
      <ea-icon name="table"></ea-icon>
      <span>Navigator Three</span>
    </ea-menu-item>
    <ea-menu-item index="4">
      <ea-icon name="gear"></ea-icon>
      <span>Navigator Four</span>
    </ea-menu-item>
  </ea-menu>
</div>

实例

结合 ea-container 实现侧栏 + 顶栏的完整布局。

Navigator Oneitem oneitem twoitem threeitem fouritem oneNavigator TwoNavigator ThreeNavigator FourNavigator Oneitem oneitem twoitem threeitem fouritem oneNavigator TwoNavigator ThreeNavigator Four 这个示例在 Header 下方嵌套了一个包含 Aside 和 Main 的 ea-container。
查看代码
html
<div class="demo ea-menu-demo">
  <ea-container class="ea-container" direction="horizontal">
    <ea-aside width="300px">
      <ea-menu default-active="2" class="ea-menu-vertical-demo" mode="vertical">
        <ea-sub-menu index="1">
          <span slot="title">
            <ea-icon name="location-dot"></ea-icon>
            <span>Navigator One</span>
          </span>
          <ea-menu-item-group group-title="Group One">
            <ea-menu-item index="1-1">item one</ea-menu-item>
            <ea-menu-item index="1-2">item two</ea-menu-item>
          </ea-menu-item-group>
          <ea-menu-item-group group-title="Group Two">
            <ea-menu-item index="1-3">item three</ea-menu-item>
          </ea-menu-item-group>
          <ea-sub-menu index="1-4">
            <span slot="title">
              <span>item four</span>
            </span>
            <ea-menu-item index="1-4-1">item one</ea-menu-item>
          </ea-sub-menu>
        </ea-sub-menu>
        <ea-menu-item index="2">
          <ea-icon name="table-cells-large"></ea-icon>
          <span>Navigator Two</span>
        </ea-menu-item>
        <ea-menu-item index="3" disabled>
          <ea-icon name="table"></ea-icon>
          <span>Navigator Three</span>
        </ea-menu-item>
        <ea-menu-item index="4">
          <ea-icon name="gear"></ea-icon>
          <span>Navigator Four</span>
        </ea-menu-item>
      </ea-menu>
    </ea-aside>
    <ea-container class="ea-container-left" direction="vertical">
      <ea-header>
        <ea-menu default-active="2" mode="horizontal" class="ea-menu-demo">
          <ea-sub-menu index="1">
            <span slot="title">
              <ea-icon name="location-dot"></ea-icon>
              <span>Navigator One</span>
            </span>
            <ea-menu-item-group group-title="Group One">
              <ea-menu-item index="1-1">item one</ea-menu-item>
              <ea-menu-item index="1-2">item two</ea-menu-item>
            </ea-menu-item-group>
            <ea-menu-item-group group-title="Group Two">
              <ea-menu-item index="1-3">item three</ea-menu-item>
            </ea-menu-item-group>
            <ea-sub-menu index="1-4">
              <span slot="title">
                <span>item four</span>
              </span>
              <ea-menu-item index="1-4-1">item one</ea-menu-item>
            </ea-sub-menu>
          </ea-sub-menu>
          <ea-menu-item index="2">
            <ea-icon name="table-cells-large"></ea-icon>
            <span>Navigator Two</span>
          </ea-menu-item>
          <ea-menu-item index="3" disabled>
            <ea-icon name="table"></ea-icon>
            <span>Navigator Three</span>
          </ea-menu-item>
          <ea-menu-item index="4">
            <ea-icon name="gear"></ea-icon>
            <span>Navigator Four</span>
          </ea-menu-item>
        </ea-menu>
      </ea-header>
      <ea-main>
        这个示例在 Header 下方嵌套了一个包含 Aside 和 Main 的 ea-container。
      </ea-main>
    </ea-container>
  </ea-container>
</div>
参数说明类型可选值默认值
mode菜单模式,决定是水平还是垂直显示string"horizontal" | "vertical""vertical"
background-color菜单背景色string"#ffffff"
text-color菜单文字颜色string"#303133"
active-text-color当前激活菜单的文字颜色string"#409eff"
default-active初始激活的菜单项 index 值string""
active动态控制当前激活的菜单项 index 值string""
collapse是否折叠菜单booleanfalse

用法可参考 MDN ::part()伪类

名称说明
container外层容器 (菜单根节点,part="container")
属性名说明默认值
--ea-menu-bg-color菜单背景颜色var(--color-white)
--ea-menu-hover-bg-color菜单项悬停背景颜色var(--blue-100)
--ea-menu-active-bg-color菜单项激活背景颜色var(--blue-100)
--ea-menu-border-color菜单边框颜色var(--grey-100)
--ea-menu-text-color菜单文字颜色var(--grey-900)
--ea-menu-active-text-color菜单项激活文字颜色var(--blue-500)
事件名说明回调参数(event.detail)
select菜单激活回调{ index: string, target: HTMLElement }
名称说明子标签
-菜单内容的默认插槽。SubMenu / Menu-Item / Menu-Item-Group
参数说明类型可选值默认值
index子菜单的唯一标识string""
mode菜单模式string"horizontal" | "vertical""vertical"
disabled是否禁用booleanfalse
active是否激活booleanfalse
open是否展开booleanfalse
label子菜单标题文本string""
名称说明
container外层容器 (part="container")
title标题容器,包含具名插槽 slot="title" (part="title")
arrow展示为下拉或右箭头的图标 (part="arrow")
content子菜单列表容器,默认插槽所在处 (part="content")
属性名说明默认值
--ea-sub-menu-spacing子菜单水平内边距20px
--ea-sub-menu-height子菜单标题高度56px
--ea-sub-menu-font-size子菜单字体大小var(--font-size-md)
--ea-sub-menu-border-color子菜单激活边框颜色var(--blue-500)
--ea-sub-menu-active-text-color子菜单激活文字颜色var(--blue-500)
--ea-sub-menu-dropdown-box-shadow下拉菜单阴影var(--box-shadow-md)
--ea-sub-menu-transition子菜单过渡动画时长var(--transition-normal)
--ea-sub-menu-z-index子菜单层级100
名称说明
title子菜单标题(具名插槽)
-子菜单项(默认插槽,放置 ea-menu-item / ea-menu-item-group 等)
参数说明类型可选值默认值
index菜单项的唯一标识string""
active菜单项是否激活(属性)booleanfalse
disabled菜单项是否禁用booleanfalse
名称说明
container菜单项外层容器 (part="container")
属性名说明默认值
--ea-menu-item-spacing菜单项水平内边距20px
--ea-menu-item-height菜单项高度56px
--ea-menu-item-font-size菜单项字体大小var(--font-size-md)
--ea-menu-item-bg-color菜单项背景颜色var(--color-white)
--ea-menu-item-border-color菜单项激活边框颜色var(--blue-500)
--ea-menu-item-active-text-color菜单项激活文字颜色var(--blue-500)
--ea-menu-item-active-bg-color菜单项激活背景颜色var(--blue-100)
--ea-menu-item-transition菜单项过渡动画时长var(--transition-normal)
名称说明
-菜单内容的默认插槽。
参数说明类型可选值默认值
group-title菜单组标题string""
名称说明
container菜单项外层容器 (part="container")
title菜单项标题容器 (part="title")
content菜单项内容容器 (part="content")
属性名说明默认值
--ea-menu-item-group-spacing分组水平内边距20px
--ea-menu-item-group-height分组标题高度36px
--ea-menu-item-group-font-size分组标题字体大小var(--font-size-md)
--ea-menu-item-group-text-color分组标题文字颜色var(--grey-500)
名称说明
-菜单项内容(默认插槽)
title菜单组标题(具名插槽,或使用 group-title 属性)