Сообщение от laimas
|
function name() {
$('selector').animate(...., function() {
name()
);
}
name();
Или в параметре step проверяя условие, останавливать анимацию запуская ее вновь с новыми параметрами.
|
Ок. Спасибо с callback - вроде разобрался. Но вопросы всё ещё остались.
<!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 moveFunction() {
if ( $('#field > div').hasClass('circle') !== true ) {
function moveForward() {
newDiv.animate({left: "+=10%" }, 1000);
newDiv.animate({left: "-=10%" }, 2000, moveForward );
} moveForward();
} else {
// Тут должно происходить вращение квадратиков по кругу =)
}
} moveFunction();
}
</script>
</body>
</html>
1) Почему при добавления класса circle moveFunction() продолжает анимироватся и почему смещение дивов выходит такое кривое ?
2) как быть с анимацией дивов по кругу ?