 
			
				18.08.2018, 17:54
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.08.2018 
					
					
					
						Сообщений: 54
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Слайд-шоу проблема со скриптом
			 
			
		
		
		
		Доброго времени суток, проблема со скриптом: 
<!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>
       
    </head>
    <body>
 		<div id='an'><header id="img" role="banner" style="background-position: 50% 18px;"></header></div>
     <script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.js"></script>
     <script>
     	
$(function(){
var	imgMass = ['img1','img2','img3','img4'];
var i = 0;
var r = 0;
var go = true;
add(); // auto 
setTimeout(remove, 5000) // auto 
setTimeout(animat, 4000); // auto 
$('header[id=img]').hover(function(){
if(go){
return stopTimer();
}
},function(){
	if(!go){
return startTimer();
}
	});
	
	function add(){
	if(!go){
    	return;
   	}else if(i == 4){
		i = 0
		}
	$('header[id=img]').addClass(imgMass[i]);	
	i++;
	setTimeout(add,5000);
	};
function remove(){
	if(!go){
    	return;
   	}else	if(r == 4){
		r = 0
	}
 $('header[id=img]').removeClass(imgMass[r]);	
	r++;
	setTimeout(remove, 5000);
};	
function animat(){ 
		if(!go){
    	return;
   	}
		$('header[id=img]').animate({'opacity':'0'},1000).animate({'opacity':'1'},1000);
		setTimeout(animat,5000)
		};
function stopTimer(){
    go = false;  
} 
function startTimer(){
    go = true;
    setTimeout(add, 5000);
    setTimeout(remove, 5000);
    setTimeout(animat, 4000);
 }    
})
     </script>
    </body>
</html>
Его идея помимо плавной смены изображений заключается в том, что при наведении на область картинок слайд-шоу останавливалась, а при уводе мышки продолжалась с того же места. И все бы ничего, но по факту слайд-шоу, до наведения  работает так как и задумано, при наведении делает паузу как и задумано, но при уводе ускоряется  раза в два, позже просто все таймеры сбиваются. Мне кажется, что проблема в setTimeout такое чувство, что после увода работают и таймер который был, до события hover() и после одновременно  Вы как считаете в чем проблема? Каким образом исправить этот скрипт? И есть ли альтернатива?  Заранее спасибо =)  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось oleg901, 18.08.2018 в 20:06.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.08.2018, 18:27
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 oleg901, 
 уберите параметр go, и прочитайте про clearTimeout 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.08.2018, 18:27
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		oleg901, 
 Пожалуйста, отформатируйте свой код!
 
Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
 
[js]
... ваш код...
[/js]
 
О том, как вставить в сообщение  исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте  http://javascript.ru/formatting.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.08.2018, 18:56
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от oleg901
			
		
	 | 
 
	| 
		 И есть ли альтернатива?
	 | 
 
	
 
 Автоматизация слайдера 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.08.2018, 20:11
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.08.2018 
					
					
					
						Сообщений: 54
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от рони
			 
		
	 | 
 
	
		oleg901, 
 Пожалуйста, отформатируйте свой код! 
 
Для этого его можно заключить в специальные теги: js/css/html и т.п., например: 
[js]
... ваш код...
[/js]
  
 
О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
	 | 
 
	
 
 Так, с этим разобрались..  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.08.2018, 20:14
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.08.2018 
					
					
					
						Сообщений: 54
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от рони
			 
		
	 | 
 
	
		oleg901, 
 уберите параметр go, и прочитайте про clearTimeout
	 | 
 
	
 
 Спасибо за ответ, а можно по подробнее насчет параметра go. Т.е он вообще не нужен, или убрать его с определенного места? Не совсем понял объясните пожалуйста    
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.08.2018, 20:14
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				смена фона с opacity эффектом и пауза на hover
			 
			
		
		
		
		oleg901,
 
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .carousel{
    width: 350px;
    height: 170px;
    position: relative;
    opacity: 0;
     border-radius: 8px;
     box-sizing: border-box;
     border: #8B4513 2px solid;
     transition: opacity .8s ease-in;
     background-size: 350px 170px;
  }
  .carousel.show{
    opacity: 1;
  }
   .carousel.vertical{
    width: 170px;
    height: 350px;
    background-size: 170px 350px;
   }
  </style>
  <script>
 window.addEventListener("DOMContentLoaded", function() {
    [].forEach.call(document.querySelectorAll(".carousel"), function(el) {
        var img = JSON.parse(el.dataset.src),
            len = img.length,
            i = len - 1,
            p = el.dataset.pause || 5E3,
            t;
        function g() {
            i = ++i % len;
            el.style.backgroundImage = "url(" + img[i] + ")";
            el.classList.add("show");
            t = window.setTimeout(k, p)
        }
        g();
        function k() {
            el.classList.remove("show");
            t = window.setTimeout(g, 800)
        }
        el.addEventListener('mouseenter',
            function() {
              window.clearTimeout(t);
              el.classList.add("show");
            });
        el.addEventListener('mouseleave', k)
    })
});
  </script>
</head>
<body>
<div class="carousel" data-pause="3000"
data-src='[
"http://img-fotki.yandex.ru/get/5640/35900228.10c/0_7388e_3ab59b4a_XL.jpeg.jpg",
"http://1.bp.blogspot.com/-aleHkBUuqOI/VY0HrCytsXI/AAAAAAAAq1g/f2emGtdqdWo/s640/2015-06-05_0145.jpg",
"http://www.fotki.ykt.ru/albums/userpics/2013/11-18/1384739526_image.jpg"]'>
</div>
<div class="carousel vertical" data-pause="3000" data-src='[
  "http://static.mnogonado.net/images/img.php?w=250&l=%2Fstore%2Fimage%2F800x600_qdv_57108c999ba0b1775c4bfe263023fb6a_1474795-404.png",
  "http://rugirlz.com/pics/hv_dp20088034.jpg"
  ]'>
</div>
</body>
</html>
 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.08.2018, 20:28
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 12.08.2018 
					
					
					
						Сообщений: 54
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от рони
			 
		
	 | 
 
	
		oleg901, 
<!DOCTYPE html>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .carousel{
    width: 350px;
    height: 170px;
    position: relative;
    opacity: 0;
     border-radius: 8px;
     box-sizing: border-box;
     border: #8B4513 2px solid;
     transition: opacity .8s ease-in;
     background-size: 350px 170px;
  }
  .carousel.show{
    opacity: 1;
  }
   .carousel.vertical{
    width: 170px;
    height: 350px;
    background-size: 170px 350px;
   }
  </style>
  <script>
 window.addEventListener("DOMContentLoaded", function() {
    [].forEach.call(document.querySelectorAll(".carousel"), function(el) {
        var img = JSON.parse(el.dataset.src),
            len = img.length,
            i = len - 1,
            p = el.dataset.pause || 5E3,
            t;
        function g() {
            i = ++i % len;
            el.style.backgroundImage = "url(" + img[i] + ")";
            el.classList.add("show");
            t = window.setTimeout(k, p)
        }
        g();
        function k() {
            el.classList.remove("show");
            t = window.setTimeout(g, 800)
        }
        el.addEventListener('mouseenter',
            function() {
              window.clearTimeout(t);
              el.classList.add("show");
            });
        el.addEventListener('mouseleave', k)
    })
});
  </script>
</head>
<body>
<div class="carousel" data-pause="3000"
data-src='[
"http://img-fotki.yandex.ru/get/5640/35900228.10c/0_7388e_3ab59b4a_XL.jpeg.jpg",
"http://1.bp.blogspot.com/-aleHkBUuqOI/VY0HrCytsXI/AAAAAAAAq1g/f2emGtdqdWo/s640/2015-06-05_0145.jpg",
"http://www.fotki.ykt.ru/albums/userpics/2013/11-18/1384739526_image.jpg"]'>
</div>
<div class="carousel vertical" data-pause="3000" data-src='[
  "http://static.mnogonado.net/images/img.php?w=250&l=%2Fstore%2Fimage%2F800x600_qdv_57108c999ba0b1775c4bfe263023fb6a_1474795-404.png",
  "http://rugirlz.com/pics/hv_dp20088034.jpg"
  ]'>
</div>
</body>
</html>
	 | 
 
	
 
 Сложновато написано. Я совсем недавно в js начал более-менее ориентироваться. По сути это мой первый скрипт    Буду разбираться если что еще обращусь к вам  
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.08.2018, 20:36
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 oleg901, 
 не копируйте сообщения целиком, если в этом нет особой необходимости. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				18.08.2018, 21:08
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 27.05.2010 
					
					
					
						Сообщений: 33,150
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				слайдер и пауза jquery
			 
			
		
		
		
		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;
    el.addClass(imgMass[i]);
    function show() {
        el.delay(3000).animate({
            "opacity": "0"
        }, 800);
        el.queue(function(next) {
            el.removeClass(imgMass[i]);
            i++;
            if (i == imgMass.length) i = 0;
            el.addClass(imgMass[i]);
            next()
        });
        el.animate({
            "opacity": "1"
        }, 800, show)
    }
    show();
    el.hover(function() {
        el.stop(true, true).css({
            "opacity": "1"
        })
    }, show)
  });
  </script>
</body>
</html>
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось рони, 22.08.2018 в 18:16.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |