Проверьте, анимирован ли div, и узнайте положение div

Я анимировал свой элемент div так, чтобы он перемещался вправо при нажатии кнопки «Войти».

Однако, когда нажимается кнопка регистрации, я хочу, чтобы div переместился обратно вправо.

Я просто хотел узнать, есть ли способ проверить, анимирован ли div влево.

var $width = $("body").width() / 2;;
var $animatedDiv = $(".hero-container");
$("#sign-in").click(function() {
  $animatedDiv = $(".hero-container").animate({
    "left": $width
  }, "slow");

  $("#welcome").html("Sign In");
  $(".form").show();
});

$("#sign-up").click(function() {
  // if the div is on the right, then move it to the left
  if ($animatedDiv.is(':animated')) {
    $animatedDiv = $(".hero-container").animate({
      "right": $width
    }, "slow");
  }
});
<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<section class = "welcome">
  <div class = "hero-container">
    <h1 id = "welcome">Welcome!</h1>
    <p>Welcome back</p>
    <button id = "sign-in">Sign in</button>
    <button id = "sign-up">Sign up</button>
  </div>
  <div class = "form">
    <form class = "sign-in">
      <h1 id = "signIn-heading">Sign In</h1>
      <input type = "text" name = "email" placeholder = "Email">
      <input type = "text" name = "pass" placeholder = "Password">
    </form>
  </div>
</section>

Если div находится справа, мне нужно переместить его влево при нажатии кнопки «Зарегистрироваться», поэтому отобразится форма регистрации.

почему это имеет значение? Если div не переместился, его анимация не переместит его, и если пользователь случайно нажимает «войти», а затем нажимает «зарегистрироваться», вы все равно захотите, чтобы анимация вернулась.

Leroy Stav 11.01.2019 17:43
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
27
1

Ответы 1

Я уверен, что есть несколько способов достичь вашей цели. Одно простое решение - установить переменную после завершения анимации:

    var animated_pos = "left";

    var $width =  $("body").width()/2;;
    var $animatedDiv = $(".hero-container");
    $("#sign-in").click(function(){

    $(".hero-container").animate({"left": $width,done:function(){animated_pos = "left";}}, "slow");

    $("#welcome").html("Sign In");

    $(".form").show();

    });

    $("#sign-up").click(function(){

    // if the div is on the right, then move it to the left

    if (animated_pos == "left"){
$(".hero-container").animate({"right": $width,done:function(){animated_pos = "right";}}, "slow");

    }


     });

Другие вопросы по теме