美文网首页
element 导航菜单折叠动画,文字不隐藏

element 导航菜单折叠动画,文字不隐藏

作者: 有你有团 | 来源:发表于2020-08-14 17:44 被阅读0次

    问题

    使用element导航菜单做侧边栏菜单,用递归组件实现路由菜单渲染,遇到两个问题

    1. 折叠后文字不隐藏
    2. 折叠动画会有延迟,补流程

    官网代码粘贴后发现官网的例子并没有这种情况,那就找问题根源;

    问题1

    度娘找到原因 element-ui 的<el-menu>标签本身希望里面嵌套的是<el-menu-item>,<el-submenu>,<el-menu-item-group>之一,但是却嵌套了<div>,而导致收折就隐藏不了文字。
    因为我们的递归组件最外层有一个<div>标签

    <template>
      <div class="slid-menu-item">    //这个div影响我们文字隐藏
        <!-- 是否只有一个子项 -->
        <template v-if="hasOneShowingChild(route.children,route)">
          <el-menu-item :index="resolvePath(onlyOneChild.path)" @click="setActivePath(resolvePath(onlyOneChild.path))">
            <i class="el-icon-menu"></i>
            <span slot="title">{{onlyOneChild.meta.title}}</span>
          </el-menu-item>
        </template>
        <!-- 有二级菜单 -->
        <template v-else>
          <el-submenu :index="route.path">
            <template slot="title">
              <i class="el-icon-menu"></i>
              <span slot="title">{{route.meta.title}}</span>
            </template>
            <side-menu-item
              v-for="child in route.children"
              :key="child.path"
              :route="child"
              :basePath="resolvePath(child.path)"
            ></side-menu-item>
          </el-submenu>
        </template>
      </div>
    </template>
    

    设置css样式隐藏文字

    /*隐藏文字*/
      .el-menu--collapse  .el-submenu__title span{
        display: none;
      }
      /*隐藏 > */
      .el-menu--collapse  .el-submenu__title .el-submenu__icon-arrow{
        display: none;
      }
    
    问题2:

    设置侧边栏宽度时,必须将.el-menu--collapse排除,否则动画效果出现BUG

      .el-menu {
        height: 100%;
      }
      .el-menu:not(.el-menu--collapse) {
          width: 200px;
        }
    

    相关文章

      网友评论

          本文标题:element 导航菜单折叠动画,文字不隐藏

          本文链接:https://www.haomeiwen.com/subject/lkbadktx.html