[Bug Report] [Component] [sub-menu, menu] el-submenu组件展开子菜单或收缩时,ui卡顿
Bug Type: Component
Environment
- Vue Version:
3.2.20 - Element Plus Version:
2.1.4 - Browser / OS:
Chrome/99.0.4844.74/Mac OS X 10_15_7 - Build Tool:
Vite
Reproduction
Related Component
-
el-sub-menu -
el-menu
Reproduction Link
Steps to reproduce
官网组件文档内即可复现,
What is Expected?
展开/收缩不卡顿
What is actually happening?
展开/收缩卡顿
Additional comments
在火狐浏览器91.6.1esr版本下不会卡顿
同样的问题,文档里的示例倒是没发现明显卡顿,但在测试项目里随便弄三个一级菜单,5个左右二级菜单,仅一个菜单包含三级,菜单项总数不超过20个,展开和折叠时就有非常明显的卡顿。另外经常仅仅是某一个菜单卡,其他正常,操作一会又会变成另一个卡。
.el-menu-vertical-demo:not(.el-menu--collapse) { width: 200px; min-height: 400px; }
我这边不知道为什么加上background-color="transparent" text-color="#eee"就会有明显的卡顿现象,复制官方的例子只加了这两个东西
看另一个issue说是setting图标引起的卡顿,实测不使用setting,就不会卡了。还有一个方法,图标不用el-icon包裹,这样使用setting也不会卡。具体原因不太清楚。
我也遇到了这个问题,请问有什么办法解决吗,我们随着菜单增多,现在有多个菜单收缩卡顿了
实测setting 图标,window系统卡顿;mac不会。
谢谢已解决,setting会导致卡顿
我也遇到了这个问题,请问有什么办法解决吗,我们随着菜单增多,现在有多个菜单收缩卡顿了
试试先去掉图标,再往下排查。
其他菜单正常,最后一项菜单展开和缩起卡顿。。。
记录一下,的确是由setting图标造成,多谢
Chrome关闭硬件加速就不卡了
确实是setting图标的问题,找了很久终于在这里发现了,如楼上所说把font-size换成另外一个值就可以了
终于找到原因了,排查了两天,一直以为是我的姿势不对 😂
有没有人遇到展开折叠,文字会过一秒左右才消失或者显示,我录了一个gif在下面的链接 https://s2.loli.net/2022/08/09/DXKJV4I9df1M5zr.gif
和图标无关,图标字体不能是18 只要不是18 就没问题
有没有人遇到展开折叠,文字会过一秒左右才消失或者显示,我录了一个gif在下面的链接 https://s2.loli.net/2022/08/09/DXKJV4I9df1M5zr.gif Find the text style animation to make it disappear faster
有没有人遇到展开折叠,文字会过一秒左右才消失或者显示,我录了一个gif在下面的链接 https://s2.loli.net/2022/08/09/DXKJV4I9df1M5zr.gif Find the text style animation to make it disappear faster
我遇到了 垂直导航菜单 折叠展开都不流畅
可以试试用Chrome94以前的版本,我自己测试是从Chrome95之后开始出现卡顿的情况。 给Chromium提了issue:https://bugs.chromium.org/p/chromium/issues/detail?id=1384444 用Firefox是不是不会出现卡顿?
我这里使用Vue 3.2.41 + element-plus 2.2.26,首次显示不卡,但是点击按钮,切换左侧菜单的收起展开就很卡,要10多秒钟才能出来(我的菜单树形结构有4层,数量非常多)
根据@kooriookami说的与Chromium内核有关,我用操作系统自带的Edge浏览器,展开折叠不卡。用360浏览器(内核版本86的)也不会卡,用QQ浏览器(内核版本94的)也会卡,但卡的时间没有Chrome的久,Chrome的版本是107的。
在Vue Devtool中查看了一下,主要是patch非常耗时
后来edge版本升级到108.0.1462.46,折叠展开也卡了。

@yuanjinyong Edge浏览器内核也是Chromium吧,应该也会卡吧。
我使用的时候是用函数组件封装透传了一下,这样方便些树形结构的递归生成
<script>
import {h, resolveComponent} from 'vue'
import 'assets/css/jy-menu.scss'
function buildMenuItemList(menuList, level) {
const nodes = []
menuList.forEach(menu => {
if (menu.f_type === 1 && menu.children?.length > 0) {
nodes.push(
h(
resolveComponent('el-sub-menu'),
{class: `jy-sub-menu-level-${level}`, index: menu.f_id, 'popper-class': 'jy-menu__popper'},
{
default: () => buildMenuItemList(menu.children, level + 1),
title: () => [h('i', {class: 'fas fa-bars'}), h('span', {class: 'jy-menu__text'}, menu.f_name)]
}
)
)
} else if (menu.f_type === 2) {
nodes.push(
h(
resolveComponent('el-menu-item'),
{class: `jy-sub-menu-level-${level}`, index: menu.f_id},
{
default: () => h('i', {class: 'fas fa-file'}),
title: () => h('span', {class: 'jy-menu__text'}, menu.f_name)
}
)
)
}
})
return nodes
}
function JwMenu(props, context) {
console.log('render', {props, context})
const {attrs, emit, slots} = context
return h(
resolveComponent('el-menu'),
{
'collapse-transition': false,
...attrs,
class: 'jy-menu',
onSelect(index, indexPath) {
const menu = indexPath.reduce((menu, id) => menu.children.find(child => child.f_id === id), {children: props.menuList})
emit('select', index, indexPath, {path: menu.f_route_path, params: {...menu}})
}
},
{default: () => buildMenuItemList(props.menuList, 1)}
)
}
// JwMenu.name = 'JwMenu'
JwMenu.props = {menuList: {type: Array}}
JwMenu.emits = ['select']
export default JwMenu
</script>

数据太多是会卡顿的,Chromium内核数据少也会卡顿。
菜单少的时候不卡,我换另外一个权限少的账号登录,切换展开折叠就不卡。
数据太多是会卡顿的,Chromium内核数据少也会卡顿。
大佬说的很对 不用setting的icon的时候 就不会出现这个问题
有没有人遇到展开折叠,文字会过一秒左右才消失或者显示,我录了一个gif在下面的链接 https://s2.loli.net/2022/08/09/DXKJV4I9df1M5zr.gif Find the text style animation to make it disappear faster
@lvminjie5201314 这个是把 collapse-transition 设置为false,就不会出现这个现象了。
我这边把图标字体大小和菜单文字的都改为14px,仍旧很卡。而且我不是用的element自带的字体图标,试过把图标去掉,也卡。
我这边把图标字体大小和菜单文字的都改为14px,仍旧很卡。而且我不是用的element自带的字体图标,试过把图标去掉,也卡。
我这边刚开始改了字体流畅了,后面又开始卡,应该不是字体问题,我发现我使用el-table的插槽属性大约2个以上就会导致侧边栏卡顿,在新版的108chrome下很丝滑,使用94chrome内核的qq浏览器明细掉帧卡顿
我这边把图标字体大小和菜单文字的都改为14px,仍旧很卡。而且我不是用的element自带的字体图标,试过把图标去掉,也卡。
试试用Firefox还有卡顿吗,这个问题很有可能是出在浏览器内核。