Анимация jQuery и переход CSS не координируются

#jquery #jquery-animate #css-transitions #timing

#jquery #jquery-анимировать #css-переходы #выбор времени

Вопрос:

Я пытаюсь выполнить простой переход. Я хочу, чтобы текст «Приветствия» перемещался вниз и одновременно увеличивался в размере.

Кажется, когда я запускаю этот код, текст «Приветствия» немного сдвигается вниз, останавливается, размер текста увеличивается до величины, указанной в js, затем он продолжает перемещаться в место, которое я указал в js.

Что я делаю не так и как мне заставить их переходить одновременно?

https://codepen.io/anon/pen/JzgwNx

Спасибо.

 $(document).ready(function(){
  $("#welcome").animate({top: "300px"}, 1500 );
  $("#welcome").css({fontSize: "70px", transition: "1.5s"});
});  
 .container {
  width: 1000px;
  margin: 0 auto;
  border: 1px solid black;
}

p {
  font-size: 5em;
  color: white;
  font-family: "Helvetica";
  text-align: center;
  margin-top: 153px;
}

nav {
  background: transparent;
  height: 3vw;
  /*width: 100%;*/
  text-align: right;
}

ul {
  margin-top: 17;
}

nav li {
  display: inline;
  /*float: right;*/
  margin: 0 5px;
  padding: 10px;
  padding-top: 15px;
}

nav a {
  text-decoration: none;
  font-size: 20px;
  color: white;
  font-family: "Helvetica";
  transition: 0.25s;
}

nav a:hover {
  border-bottom: 3px solid gray;
  padding-bottom: 5px;
  font-size: 22px;
  font-weight: 500;
  transition: 0.25s;
}

header {
  background: url(main.jpg);
  height: 100vh;
}

#welcome {
  color: black;
  font-family: "Helvetica";
  font-size: 30px;
  text-align: center;
  position: relative;
}  
 <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>

<header>
  <nav>
    <ul>
      <li><a href="#">Home</a></li>
      <li><a href="#">About</a></li>
      <li><a href="#">Contact</a></li>
    </ul>
  </nav>
  <h1 id="welcome">Welcome</h1>
</header>  

Комментарии:

1. CSS3 поддерживает все это с частотой кадров, с которой jQuery никогда не смог бы справиться. Почему вы используете jQuery для этого?

2. Это происходит потому, что когда вы устанавливаете transition inline в JS, по умолчанию используется значение all . Это означает, что помимо анимации, изменение top также переходит. Здесь я изменил JS на set transitionDuration , указав в стиле только переход font-size .

Ответ №1:

    You can achieve it using keyframe css.
  

ссылка на codepen.