Obtenha um efeito de exibição oculto quando o mouse se move para dentro e para fora da caixa

Cenário de aplicação: Freqüentemente, quando o mouse é acoplado a uma caixa A, aparecerá outra caixa B. Se o mouse for movido, a caixa B desaparecerá com atraso e se for movido para a caixa B, não desaparecerá .

Use setTimeout para alcançar

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div {
     
     
            float: left;
        }
        
        .red {
     
     
            width: 100px;
            height: 200px;
            background-color: red;
        }
        
        .blue {
     
     
            width: 100px;
            height: 100px;
            background-color: blue;
            display: none;
        }
    </style>
</head>

<body>
    <div class="red"></div>
    <div class="blue"></div>
    <script>
        var red = document.querySelector('.red');
        var blue = document.querySelector('.blue');
        var timer = null;

        // red.addEventListener('mouseover', function() {
     
     
        //     clearTimeout(timer);
        //     blue.style.display = 'block';
        // })

        // red.addEventListener('mouseleave', function() {
     
     
        //     timer = setTimeout(function() {
     
     
        //         blue.style.display = 'none';
        //     }, 500);
        // })

        // blue.addEventListener('mouseover', function() {
     
     
        //     clearTimeout(timer);
        // })

        // blue.addEventListener('mouseleave', function() {
     
     
        //     timer = setTimeout(function() {
     
     
        //         blue.style.display = 'none';
        //     }, 500);
        // })





        function over() {
     
     
            clearTimeout(timer);
            blue.style.display = 'block';
        }

        function leave() {
     
     
            timer = setTimeout(function() {
     
     
                blue.style.display = 'none';
            }, 500);
        }

        red.addEventListener('mouseover', over)
        blue.addEventListener('mouseover', over)

        red.addEventListener('mouseleave', leave)
        blue.addEventListener('mouseleave', leave)
    </script>
</body>

</html>

Acho que você gosta

Origin blog.csdn.net/weixin_45773503/article/details/112861533
Recomendado
Clasificación