在 Internet Explorer 上使用 mouseenter 和 moseleave 闪烁淡出

问题描述

我有两个 div,它们在 mouseenter/mouseleave 上淡入/淡出他们的子 div。 在所有浏览器上它看起来都不错,除了在 Internet Explorer 上(我需要让它在 Internet Explorer 上工作)。在 IE 上,悬停在 div 上时会闪烁,而另一个仍在淡出。

如何防止这种闪烁?

以下是说明问题的 gif:

Chrome

IE

<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    </head>
    <body>
        <div class="parent" style="background:gray; padding: 50px; margin: 20px; width: 350px; height:50px;">
            <div class="child" style="display: none; background:white; height: 100%;">
            </div>
        </div>

        <div class="parent" style="background:gray; padding: 50px; margin: 20px; width: 350px; height:50px;">
            <div class="child" style="display: none; background:white; height: 100%;">
            </div>
        </div>
    </body>
    <script>
    $(document).ready(function(){
        $(".parent").mouseenter(function(){
            $(this).find(".child").stop().fadeIn();
        });

        $(".parent").mouseleave(function(){
            $(this).find(".child").stop().fadeOut();
        });
    });
    </script>
</html>

解决方法

我找到了解决方案。不使用 jQuery 的淡入/淡出,从不透明度 0 和可见性隐藏开始,并添加一个具有不透明度 1 和可见性在 mouseenter 上可见的类。

<html>
    <head>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
        <style>
            .child {
                -webkit-transition: all 0.4s ease-in-out 0s;
                -moz-transition: all 0.4s ease-in-out 0s;
                -ms-transition: all 04s ease-in-out 0s;
                transition: all 0.4s ease-in-out 0s;

                visibility: hidden;
                opacity: 0;
            }

            .child-show {
                visibility: visible;
                opacity: 1;
            }
        </style>
    </head>
    <body>
        <div class="parent" style="background:gray; padding: 50px; margin: 20px; width: 350px; height:50px;">
            <div class="child" style="background: white; height: 100%;">
            </div>
        </div>

        <div class="parent" style="background:gray; padding: 50px; margin: 20px; width: 350px; height:50px;">
            <div class="child" style="background: white; height: 100%;">
            </div>
        </div>
    </body>
    <script>
    $(document).ready(function(){
        $(".parent").mouseenter(function() {
            $(this).find(".child").addClass("child-show");
        });

        $(".parent").mouseleave(function() {
            $(this).find(".child").removeClass("child-show");
        });
    });
    </script>
</html>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...