Спасибо за более качественный и оптимизированный код, но увы он не решает проблему с ускорения смены классов после многократного наведения и увода мышью. Смотрите если вы наведете мышкой на квадрат и уведете, потом повторите то смена цветов и затухание ускоряется А если быстро навести и увести(многократно), то вообще будет мигать без перерыва. Об этой проблеме я вам говорил 
	 | 
	
		
 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>
 | 
	
		
 Спасибо, профессор) :) :victory: 
	 | 
	
		
 oleg901, 
	лучше менять блоки а не background  | 
| Часовой пояс GMT +3, время: 03:54. |