el-menu 菜单项过多时,滚动加载失败(2)

444 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第10天,点击查看活动详情

昨天的问题,今天我解决了!!哇,可真是很简单,都后悔挂出来了。但记录下来,也是提醒自己,越是遇到这种简单问题,越要认真看,仔细分析要点出在哪里。找到关键点,改起来就八九不离十。

回顾一下(绝不是凑字数)

gdt1.png

如上图,正常大小下,侧边菜单列表中菜单项是有九项的,但如果把页面放大,就会变成下图所示:

gdt2.png

可以看出由于页面被放大,侧边菜单列表的 高度 变小,然后菜单项就变成了 八项

思路

我昨天在分析时,其实大致方向是对的,就是页面放大,导致侧边 el-aside 的高度变小,进而导致展示不出来最后那一项。感觉其实最后一项已经加载出来了,只是由于页面高度原因,看不到,被挡在了最下面。找到了最根本的原因———— 高度,就好办了,其实还是改高度,但这里改高度也很有讲究。

解决

之前其实我也有试过改高度,但一直没成功,我就以为不是这个问题,但今天无意中看到了高度的另一种写法,试了一下,就成功了。

之前的写法:

    .el-aside {
        height: calc(100% - 10px);
        overflow: auto;
    }

因为我也不确定到底高度应该减多少,所以先减了10像素,但真正到页面中去调的时候,发现减来减去,都不完美:如果高度减去很多,达到最后一项不会被挡的临界值,这时放大,最后一项还是在的,但由于减去很多,导致页面很丑,就像是侧边漏了一部分(如下图1,图2);

51.png

图1

52.png

图2

如果高度减去的比较少,虽然视觉效果上好了一点(但还是有漏掉一部分),但页面放大后,最后一项还是被挡,还是看不到(如下图3,图4);

53.jpg

图3

54.png

图4

现在的写法:

    .el-aside {
        height: calc(100vh - 45px);
        overflow: auto;
    }

这样写,我在页面中调了一下,找到了减去的最佳值45像素,然后能够同时满足 侧边不会因为减去这么多有一部分是漏掉的页面放大后,最后一项也不会被挡住,如图5和图6;

image.png

图5

image.png

图6

问题解决,算是了却了心里的一件小事 :) 自己亲手实验过,应该不会有问题。
不过如果文章其他地方有错误,还望指正。
我向你敬礼啊,Salute!