发现问题

在这里插入图片描述
就是这个黑边框,困扰我一上午

复现问题

经过f12查看发现,页面首次加载时,不会生成子菜单弹窗div代码,因为我设置了默认菜单展开,以下是首次加载时的elements
在这里插入图片描述
很干净,啥也没有。
当我首次缩放菜单时会生成子菜单的弹窗代码
在这里插入图片描述
此时鼠标悬浮在icon上面就可以显示子菜单弹窗
在这里插入图片描述
然后鼠标再移到这个弹窗上面就会出现开头的黑边框
在这里插入图片描述

解决问题

1.将问题去百度,结果没有相关结果
2.去浏览器控制台调试,看哪些元素有:hover :fours ,再根据元素去解决,结果啥用没有(可能这一步就是错的)
3.将问题发送前端相关群、贴吧等(无果)
4.将问题交给豆包,经过我和豆包的疯狂:deep(),还是无果
5.最后我按照发现问题的方法,描述给了豆包,豆包给了处理结果,但还是无效,但我不放弃继续问豆包,最后问出了解决方式
在这里插入图片描述
在这里插入图片描述
注意点的是,如果style有scoped,那么就会失效,让这个样式作用于全局。

解决问题后突然想到赵子龙和刘禅七进七出,我和豆包也是七进七出,哈哈

更新:

.ultimate-fix-popper:focus-within { outline: none !important; } 这段代码的作用是清除元素在 “包含焦点元素” 状态下的默认轮廓线,这往往是解决弹窗黑边框的关键 —— 因为你看到的 “黑边框” 很可能是浏览器为了强调 “当前有焦点元素” 而显示的默认轮廓(outline),而非 border。

为什么会出现这个 “黑边框”?

当鼠标悬浮到折叠菜单的图标上时,子菜单弹窗会显示,此时弹窗内部的元素(如菜单项)可能会自动获得焦点(尤其是 Element Plus 这类组件库会通过 JavaScript 管理焦点状态)。

浏览器有一个默认行为:当一个元素包含有焦点的子元素时,会给这个元素添加 :focus-within 伪类,并显示默认的 outline(通常是深色的细边框,看起来像 “黑边框”)。

这个 outline 不是自己定义的 border,而是浏览器的 ** accessibility(无障碍访问)特性 **,用于提示用户 “当前哪个区域有可交互的焦点元素”。

这段代码的作用

:focus-within 伪类:匹配 “自身或其后代元素获得焦点” 的元素。对于子菜单弹窗来说,当鼠标悬浮时,弹窗内的菜单项可能获得焦点,导致弹窗触发 :focus-within 状态。
outline: none !important:强制清除这个状态下的默认轮廓线,从而去掉你看到的 “黑边框”。

为什么添加后能解决问题?

之前的方案可能只覆盖了 border 样式,但忽略了浏览器在 :focus-within 状态下的默认 outline。当弹窗内元素获得焦点时,浏览器会自动添加 outline,看起来就像 “黑边框”。
这段代码精准针对这个状态,彻底清除了默认轮廓,因此 “黑边框” 就消失了。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐