gpt4 book ai didi

Blazor 3.1 嵌套的鼠标悬停事件

转载 作者:行者123 更新时间:2023-12-03 18:20:43 24 4
gpt4 key购买 nike

我对嵌套的 div 有一个问题,它们都有 onmouseover/onmouseout 事件。我有一个导航菜单,它从屏幕一侧弹出,由 onmouseover 事件触发。在这个导航菜单中,我有一个弹出打开的子菜单,它也是由 onmouseover 事件触发的。两个打开事件独立工作正常,但是当一起运行时,触发器似乎被外部 div 拦截(外部 div 打开但内部 div 什么都不做)。

  • 我曾尝试在父 div 和子 div 上添加 @onmouseover:stopPropagation="true",但这并没有产生任何效果。
  • 我知道关于 onmouseenter/onmouseleave 的讨论与 Blazor 5 中的 html/js 类似,但 11 月还有很长的路要走,而且支持仍然悬而未决。

  • 如果我错过了一个技巧,请告诉我。代码如下(省略了 c# 代码 - 只是相应地修改了 collapseNavicationFlag 和 ExpandSubmenu 标志字符串。)
    导航菜单
    <div id="nav-bar" class="@collapseNavigationFlag" @onmouseover="ExpandNavigation" @onmouseout="CollapseNavigation">


    <div>
    <ul class="nav flex-column">
    foreach (var navigationItem in navigationSection.NavigationItems)
    {
    <NavMenuSubmenu />
    }
    </ul>
    </div>
    导航菜单子(monad)菜单
    <li>
    <ul class="nav-submenu @expandSubmenu"
    @onmouseover="ExpandSubmenu"
    @onmouseout="CollapseSubmenu">
    @foreach (var navigationSubItem in NavigationItem.NavigationSubItems)
    {
    <li class="nav-submenu-item px-3">
    <a href="@navigationSubItem.Page">
    @navigationSubItem.Title
    </a>
    </li>
    }
    </ul>
    </li>

    最佳答案

    聚会有点晚了,但在网上搜寻解决方案后,我终于找到了一个。
    在 Blazor 应用的顶层创建文件 EventHandlers.cs 并使用以下代码填充它:

    [EventHandler("onmouseleave", typeof(MouseEventArgs), true, true)]
    [EventHandler("onmouseenter", typeof(MouseEventArgs), true, true)]
    public static class EventHandlers {
    }
    现在您应该能够像使用 @onmouseout 等一样在 html 元素上声明事件回调。
    <div id="nav-bar" class="@collapseNavigationFlag" @onmouseenter="ExpandNavigation" @onmouseleave="CollapseNavigation">
    这是一个非常不明显且看似未记录的解决方案,我设法通过破译半答案的 Blazor 讨论来拼凑起来。我不是 100% 肯定该文件必须被称为 EventHandlers.cs,我可能没有尝试过,我也不是 100% 肯定它必须放在您的应用程序的顶层,我再次没有没试过。
    我很高兴终于让它工作了,不确定这种方法的稳定性,到目前为止没有遇到任何问题,但不能排除任何奇怪之处,因为我认为 Blazor 不直接支持 onmouseenter/onmouseleave 是有原因的盒子?
    此问题还有另一种解决方法,设置 pointer-events:none;然而,在子元素的 css 上,此方法可防止出现任何交互性,例如颜色更改鼠标悬停选项和类似性质的事物。
    希望这个答案可以帮助解决与 onmouseenter 和 onmouseleave 相同的问题的人在开发交互式 Web ui 时有点重要的功​​能。

    关于Blazor 3.1 嵌套的鼠标悬停事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63265941/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com