Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Слайд-шоу проблема со скриптом (https://javascript.ru/forum/events/74940-slajjd-shou-problema-so-skriptom.html)

oleg901 22.08.2018 15:08

Спасибо за более качественный и оптимизированный код, но увы он не решает проблему с ускорения смены классов после многократного наведения и увода мышью. Смотрите если вы наведете мышкой на квадрат и уведете, потом повторите то смена цветов и затухание ускоряется А если быстро навести и увести(многократно), то вообще будет мигать без перерыва. Об этой проблеме я вам говорил

рони 22.08.2018 19:04

oleg901,
<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="utf-8">
    <title>Документ без названия</title>
    <!-- <link href="style.css" rel="stylesheet" type="text/css" /> -->

    <style type="text/css">
    .img1 {
            background-color: #7e6497;
    }

    .img2 {
            background-color: #d0ff00;
    }

    .img3 {
            background-color: #00c8ff;
    }

    .img4 {
            background-color: #001318;
    }

    #img {
            width: 200px;
            height: 200px;
            margin: auto;
            margin-top: 8%;
    }
    </style>
    <style type="text/css">
    header.c1 {
            background-position: 50% 18px;
    }
    </style>
</head>
<body>
    <div id='an'>
        <header id="img" role="banner" class="c1"></header>
    </div>
    <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.js"></script>
    <script>
$(function() {
    var el = $("#img");
    var imgMass = ["img1", "img2", "img3", "img4"];
    var i = 0;
    var timer;
    el.addClass(imgMass[i]);

    function show() {
        window.clearTimeout(timer);
        el.removeClass(imgMass[i]);
        i++;
        if (i == imgMass.length) i = 0;
        el.addClass(imgMass[i]);
        el.animate({
            "opacity": "1"
        }, 800);
        timer = window.setTimeout(hide, 3E3)
    }

    function hide() {
        el.animate({
            "opacity": "0"
        }, 800, show)
    }
    show();
    el.mouseenter(function() {
        window.clearTimeout(timer);
        el.stop(true, false).css({
            "opacity": "1"
        })
    }).mouseleave(function() {
        el.stop(true, false);
        hide()
    })
});
    </script>
</body>
</html>

oleg901 22.08.2018 20:50

Спасибо, профессор) :) :victory:

рони 22.08.2018 20:51

oleg901,
лучше менять блоки а не background


Часовой пояс GMT +3, время: 20:07.