Я хочу, чтобы при прокрутке вверх заголовок моей страницы также поднимался, но после 150-й позиции прокрутки он плавно скользил вниз и фиксировался сверху. Я пробовал много способов, но не получил должного результата. Ребята, посмотрите мой код, пожалуйста?
что-то вроде этого http://cssdeck.com/labs/sticky-header-with-slide-down-effect у этого скрипта какой-то глюк.
jQuery(document).ready(function ($) {
$(window).scroll(function () {
if ($(window).scrollTop() >= 100) {
$('.navarea').addClass('fixed-header');
} else {
$('.navarea').removeClass('fixed-header');
}
});
});
вот css
.navarea {
z-index: 2;
background: rgba(255, 255, 255, 0.9);
transition: all 0.5s ease-in-out;
}
.fixed-header {
position: fixed;
background: rgba(255, 255, 255, 0.9);
text-shadow: none;
padding-bottom: 0;
top: 0;
z-index: 5;
transition: all 0.5s ease-in-out;
}
Активный URL: https://codepen.io/pagol/pen/XovvGJ
@thanveer Спасибо за попытку
я исправил это
@ThanveerShah я кое-что исправил, а также изменил сторону панели вывода, тогда я буду работать. но пока не работает анимация скольжения вниз
Ориентация на класс при прокрутке — это плохо. Убийца производительности. Кэшируйте свои селекторы, используйте дроссель для обратного вызова прокрутки.
@RokoC.Buljan спасибо за предложение. Можете ли вы поделиться с тем, как это лучше всего сделать. пожалуйста
Я не знаю, что вы подразумеваете под "but after scroll position 150 it will slide down smoothly and fixed on top" — это может означать что угодно. Особенно, когда в вашем коде вы используете 100 в качестве некоторого эталонного значения...
@RokoC.Buljan, пожалуйста, проверьте мой справочный URL, тогда вы сможете легко понять. когда вы будете прокручивать вниз. заголовок/меню скользит сверху вниз и закрепляется сверху. что я хочу сделать
Поэтому тоже непонятно первый "when I scroll up my page header will go up" вверх? где?
Итак, вы хотите точно такое же поведение, как в демо, но без глюков? Или что-то другое?
Давайте продолжить обсуждение в чате.

Вот пример, который
transition для клонированной навигацииposition sticky и visibility для исходного элемента для улучшения эффекта// https://github.com/micro-js/debounce/blob/master/lib/index.js
function debounce(fn, time) {
var pending = null
return function() {
if (pending) clearTimeout(pending)
pending = setTimeout(run, time)
return function() {
clearTimeout(pending)
pending = null
}
}
function run() {
pending = null
fn()
}
}
function documentScrollTop() {
const doc = document.documentElement;
return (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);
}
const el_nav1 = document.getElementById("nav");
const el_nav2 = el_nav1.cloneNode(true);
el_nav1.parentNode.insertBefore(el_nav2, el_nav1);
el_nav2.style.cssText = `position:fixed; transform:translateY(-100%);`;
function animateNavigation() {
const canShow = documentScrollTop() >= 150;
el_nav2.style.transform = `translateY(${canShow?0:-100}%)`;
el_nav1.style.cssText = `position:${canShow?'sticky':'relative'}; visibility:${canShow?'hidden':'visible'};`
}
window.addEventListener('scroll', debounce(animateNavigation, 99));
document.addEventListener('DOMContentLoaded', animateNavigation);/*QuickReset*/ *{margin:0;box-sizing:border-box;} html,body{height:100%;font:14px/1.4 sans-serif;}
p {height:300vh;border:4px dashed #000;} /* force scrollbars */
#nav {
position: relative;
top: 0;
width: 100%;
padding: 20px;
background: gold;
transition: transform 0.6s;
}<nav id = "nav">NAVIGATION HERE</nav>
<p></p>Возможности для совершенствования
animateNavigation, которое проверяет, было ли уже выполнено действие (чтобы предотвратить дополнительные вызовы style, пока canShow не переключится на новое логическое значение)большое спасибо за помощь. вы проводите много времени. еще раз спасибо
Да, я тоже попробовал ваш код, он не работает по какой-то странной причине, я даже пытался создать новый, но он все равно не работает, я не понимаю, почему