Показать сообщение отдельно
  #1 (permalink)  
Старый 19.10.2016, 14:21
Аватар для Black_Star
Профессор
Отправить личное сообщение для Black_Star Посмотреть профиль Найти все сообщения от Black_Star
 
Регистрация: 11.07.2016
Сообщений: 300

Как зациклить анимацию в jQuery
Добрый день уважаемые. Столкнулся с вопросом, как зациклить анимацию, если функция находиться в условии if.

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>

	<style type="text/css">
		#field {
			position: relative;
			width: 300px;
			height: 300px;
			background-color: red;
		}

		.square {
			position: absolute;
			width: 50px;
			height: 50px;
			background-color: black;
			border: 1px solid white;
			color: white;
			font-size: 1.5em;
			text-align: center;
			cursor: pointer;
		}

		.square:nth-child(1) {
			top: 20%;
			left: 20%;
		} 

		.square:nth-child(2) {
			top: 40%;
			left: 20%;
		}
		.square:nth-child(3) {
			top: 60%;
			left: 20%;
		}
		.square:nth-child(4) {
			top: 80%;
			left: 20%;
		}
		#button {
			width: 300px;
			height: 100%;
			background-color: green;
			cursor: pointer;
			font-size: 1.5em;
			color: white;
		}
	</style>

	
</head>
<body>
	<div id="field">
		<div class="square">1</div>
		<div class="square">2</div>
		<div class="square">3</div>
		<div class="square">4</div>
	</div>
	
	<div id="button">Clear function</div>


	<script type="text/javascript">

	window.onload = function() {

	var newDiv = $('#field > div');


  
	// alert('vse ok');

	$('#field').on('click', 'div', function() {

		$(this).addClass('circle');
		move();

	});



	$('#button').on('click', function() {

	  newDiv.removeClass('circle');	

    newDiv.eq(0).css({'top':'',
                      'left':''});
    newDiv.eq(1).css({'top':'',
                      'left':''});
    newDiv.eq(2).css({'top':'',
                      'left':''});
    newDiv.eq(3).css({'top':'',
                      'left':''});
 
	})



 function move() {

 		
 		    newDiv.eq(0).css({'top':'15%',
                          'left':'25%'});

        newDiv.eq(1).css({'top':'15%',
                          'left':'57%'});

        newDiv.eq(2).css({'top':'65%',
                          'left':'57%'});

        newDiv.eq(3).css({'top':'65%',
                          'left':'25%'});

 }


function moveForward() {

 if ( $('#field > div').hasClass('circle') !== true  ) {

  newDiv.animate({left: "+=10%" }, 1000);
  newDiv.animate({left: "-=10%" }, 2000);

} else {

  // Тут должно происходить вращение квадратиков по кругу =)

}

} moveForward();

}

		
	</script>
</body>
</html>


По задумке квадратики должны ездить туда-сюда пока к ним не добавится класс circle /
После нажатия они меняют свое положение и начинают вертеться по кругу относительно пересечения диагонали их расположения (ну или как-то так, вообщем оно должно синхронно и красиво )
(эффект тоже длиться постоянно пока у квадратиков есть класс .circle)

Я честно говоря не придумал какое смещение им надо давать , что б они двигались синхронно по кругу)

И ещё вопрос. почему если нажав на див (добавить ему класс circle) до того момента как проиграется (<3сек) анимация, они так не хорошо изменяют свое положение ?
Ответить с цитированием