我发现“检查元素”是Chrome中一种非常有用的工具,但我在使用它查看导航栏上一个元素的子菜单时遇到了问题,该子菜单会在其父项目上悬停时弹出。
弹出式窗口(或下拉菜单)的样式不太符合我的要求,因此我右键单击>检查元素以查看从哪里来的内容,并更好地了解如何实现我想要的效果。
然而,一旦我将鼠标移开菜单,它就消失了。因此,我无法在检查面板中选择不同的元素,并同时查看哪个区域被突出显示。
有没有一种方法可以解决这个问题,而不改变菜单,使其在激活后保持“弹出状态”?
如果hover元素由JS触发(如果是由CSS触发的:hover
,请参见gmo的答案),您可以在暂停脚本执行时检查它。这是一种比其他答案建议的冻结DOM的方法简单得多。您可以按照以下方式暂停脚本执行而不失去hover元素:
以下是在Chrome中执行此操作的方法。我相信Firefox也有类似的程序:
打开开发者工具并转到“Sources”。
注意暂停脚本执行的快捷键- F8 (根据您的操作系统可能还有其他快捷键)。
与UI交互以使元素出现。
按F8。
现在您可以移动鼠标,检查DOM或进行其他任何操作。该元素将保留在那里。
debugger
语句某些网页附加了keydown
/keypress
/keyup
事件侦听器,这些侦听器会干扰上面的快捷方式。在这种情况下,您可以通过在打开hover时触发debugger
语句来暂停脚本执行:
打开JS控制台并输入:
// Pause script execution in 5 seconds
setTimeout(() => { debugger; }, 5000)
触发悬停并等待debugger
语句执行。
F8
之后,屏幕会冻结,无法选择任何元素。我的解决方法是按下F8
,然后切换到“元素”选项卡,在其中搜索悬停元素上的单词。 - AngryHacker:hover
)显然应该是正确的解决方案,但非常不幸的是,这在我记忆中一直没有在 Chrome/Firefox 上起作用... - Gilad Barner:hover
选项在“切换类选项”中。 - Sagnik Pradhan对我而言有效的方法是选择要检查和配置属性修改断点的特定a标签:
在执行上述操作后,我通常会再次选择那个a标签,然后即使当我鼠标悬停到其他地方(如检查元素等)时,下拉菜单也会自动保持不变。
在检查菜单下拉元素时,只需刷新浏览器即可回到正常状态。
希望这有所帮助. :)
你也可以在JavaScript控制台中这样做:
$('#foo').trigger('mouseover');
一种将元素“冻结”在“悬停”状态的方法。
以下是我在Chrome中不改变CSS或暂停JS的情况下进行操作的方法(我使用的是Mac电脑,如果您正在Windows上运行,请自行适当调整):
现在,悬停检查工具将应用于您在子导航中打开的元素。
如果由于某种原因您无法使用脚本暂停,请尝试以下非常简单的方法:
我需要做这个,但我想检查的元素是基于另一个元素的悬停状态动态添加和删除的。我的解决方案类似于这个,但对我来说不太适用。
所以这就是我所做的:
mouseover
上进入调试器模式。$(document).on('mouseover', '[your-hover-element-selector]', function(e) {
debugger;
});
这样一来,你的DOM将会被暂停在悬停状态,你可以使用元素检查器来检查所有在该状态下存在的元素。
太棒了!
感谢gmo的建议。我之前不知道这些属性设置,非常有帮助。
稍作修改以下措辞:
右键点击您想样式化的元素
打开'检查'工具
在右侧,导航到小的'Styles'选项卡
在CSS样式表内容上方找到
选择.hov选项 - 这将为您提供所选HTML元素的所有设置
单击并更改所有选项以使其无效
现在选择您想要微调的状态 - 在激活其中任何一个时,您的样式表将直接跳转到那些设置:
这些信息对我来说是救命稻草,简直不能相信我才刚听说它!
mouseleave
事件。这样,即使您将鼠标移出父菜单,子菜单也应该保持打开状态。 - jbabey