Вы в правильном направлении.Все зависит от того, что «плавно» означает для вашего проекта.
Более простое и простое решение - удалить время перехода из функций hide
и show
, например:
if ($(document).scrollTop() > $("#mainNavbar").height()) {
$("figure i").hide();
$("figure p").hide();
$("nav").css("height", "50px");
}
else {
$("figure i").show();
$("figure p").show();
$("nav").css("height", "128px");
};
Я бы также предложил изменить время перехода #mainNavbar
на 0,4 с вместо 0,8 с
Причина:
Элементы HTML будут занимать место на экране, если у них нет свойства display: none
или position: absolute or fixed
.Это означает, что пространство, которое они используют, не будет «доступно», пока они полностью не исчезнут.Вот почему ваш <h5>
будет «прыгать» только после того, как время для скрытия элемента закончится.Изменение этого времени на 0 (или просто его удаление) сделает «скачок» «невидимым» для пользователя, потому что вы удалили эту задержку.
О переходе #mainNavbar
из 0.8s до 0,4 с , это просто для того, чтобы сразу скрыть изображение и <p>
.
Опять же, это будет зависеть от того, насколько «плавно» вам нужен ваш проект дляДа, но я думаю, что с этой конфигурацией у вас будет хороший визуальный эффект, соответствующий стандарту других веб-сайтов.
Если вам нужно, чтобы изображение и <p>
медленно исчезали, вам нужно будет вручную изменить положениевашего <h5>
(как вы уже знаете).Вы можете либо включить свойство transition
в CSS <h5>
, либо использовать timeOut
для перемещения <h5>
после того, как изображение и <p>
исчезнут.
UPDATE
Если вам нужно медленно скрыть значки и <p>
, лучшее решение, вероятно, состоит в том, чтобы установить все с помощью position: fixed
, чтобы ничто не занимало место друг у друга.
В итоге ваш <a>
или .nav-link
потребуется position: relative
, а у всех детей (значок, <h5>
и <p>
) будет position: fixed
.Затем вы можете использовать функцию javascript, которая вам уже нужна, для изменения атрибута <h5>
top
.
Обратите внимание, что вам потребуется перестроить объекты, найти нужные атрибуты top
и left
, теперьэта позиция изменилась: (
Вот рабочий пример: https://codepen.io/brunomont/pen/XQoZrL