ElementPlus「Menu」折叠时无法折叠标题文字

问题

跟着课程在写菜单栏的折叠功能时,发现标题折叠不起来,问题代码与图片如下:

/*父组件*/
      <el-scrollbar always class="el-scrollbar">
        <el-menu
          active-text-color="#ffd04b"
          background-color="#001529"
          class="el-menu-vertical-demo"
          text-color="#fff"
          :default-active="$route.path"
          :collapse="LayOutSettingStore.fold ? true : false">
          <Logo></Logo>
          <Menu :menuList="userStore.menuRoutes"></Menu>
        </el-menu>
      </el-scrollbar>

/*子组件「Logo」*/
  <el-menu-item class="box">
    <img :src="setting.logo" />
    <p class="title">{{ setting.title }}</p>
  </el-menu-item>

在这里插入图片描述
在这里插入图片描述
可以看到,当隐藏起来的时候,文字无法正常隐藏

问题原因

百度有找到类似的问题,
element-ui 的<el-menu标签本身希望里面嵌套的是<el-menu-item, 而<el-submenu,<el-menu-item-group之一,但是却嵌套了<div,从而导致收折就隐藏不了文字。
个人推测
div和p标签都是块级元素,可能是这个原因

解决方法

把p标签改为span标签

<template>
  <el-menu-item class="box">
    <img :src="setting.logo" />
    <span class="title">{{ setting.title }}</span>
  </el-menu-item>

</template>

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是Vue3实现折叠面板动画的示例代码: ```html <template> <div class="accordion"> <div class="accordion-item" v-for="(item, index) in items" :key="index"> <div class="accordion-header" @click="toggle(index)"> {{ item.title }} <span class="icon" :class="{ 'is-active': item.open }"></span> </div> <div class="accordion-content" :style="{ height: item.open ? item.height + 'px' : 0 }" @transitionend="transitionEnd(index)"> <div class="inner"> {{ item.content }} </div> </div> </div> </div> </template> <script> import { ref } from 'vue'; export default { setup() { const items = ref([ { title: '折叠面板1', content: '这是折叠面板1的内容', open: false, height: 0, }, { title: '折叠面板2', content: '这是折叠面板2的内容', open: false, height: 0, }, { title: '折叠面板3', content: '这是折叠面板3的内容', open: false, height: 0, }, ]); const toggle = (index) => { items.value[index].open = !items.value[index].open; if (items.value[index].open) { items.value[index].height = document.querySelector(`.accordion-item:nth-child(${index + 1}) .accordion-content .inner`).offsetHeight; } else { items.value[index].height = 0; } }; const transitionEnd = (index) => { if (!items.value[index].open) { items.value[index].height = 0; } }; return { items, toggle, transitionEnd, }; }, }; </script> <style> .accordion { .accordion-item { .accordion-header { cursor: pointer; .icon { display: inline-block; width: 10px; height: 10px; margin-left: 10px; border-top: 2px solid #333; border-right: 2px solid #333; transform: rotate(45deg); transition: transform 0.3s ease; &.is-active { transform: rotate(-135deg); } } } .accordion-content { overflow: hidden; transition: height 0.3s ease; .inner { padding: 10px; } } } } </style> ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值