Кодим
Меню в зеро блоке, которое исчезает и появляется при прокрутке вверх

1. При прокрутки вниз меню из зеро блока виднеется 200px, потом исчезает

2. При прокрутке вверх через 100px появляется и остается, но если пользователь опять начал скролить вниз, то исчезает через 200px

3. Замените ваш номер блока меню в зеро блоке (вначале кода)

4. Высота меню - блока 40Px

<style>
#rec1248699606 {
position: fixed !important;
top: 0; left: 0; right: 0;
width: 100%;
z-index: 9999;
transform: translateY(0);
transition: transform 0.35s ease;
will-change: transform;
}

/* Отступ для контента */
body.tilda-sticky-padding { padding-top: 40px !important; }

html, body { margin:0; }
</style>

<script>
document.addEventListener('DOMContentLoaded', function () {
const menu = document.querySelector('#rec1248699606');
if (!menu) return;

const HIDE_AFTER_DOWN_PX = 200;
const SHOW_AFTER_UP_PX = 100;
const NEAR_TOP_PX = 10;

let lastY = window.pageYOffset || 0;
let dir = 'up';
let acc = 0;
let hidden = false;
let ticking = false;

function applyPadding(visible, y) {
// padding добавляем только если не у самого верха
if (visible && y > NEAR_TOP_PX) {
document.body.classList.add('tilda-sticky-padding');
} else {
document.body.classList.remove('tilda-sticky-padding');
}
}

function showMenu(y) {
if (hidden) {
menu.style.transform = 'translateY(0)';
hidden = false;
}
applyPadding(true, y);
}

function hideMenu() {
if (!hidden) {
menu.style.transform = 'translateY(-100%)';
hidden = true;
}
applyPadding(false, window.pageYOffset || 0);
}

function onScroll() {
const y = window.pageYOffset || 0;
const delta = y - lastY;

if (y <= NEAR_TOP_PX) {
acc = 0; dir = 'up';
showMenu(y); // у самого верха меню видно
lastY = y; return;
}

if (delta > 0) { // вниз
if (dir !== 'down') { dir = 'down'; acc = 0; }
acc += delta;
if (acc >= HIDE_AFTER_DOWN_PX) hideMenu();
} else if (delta < 0) { // вверх
if (dir !== 'up') { dir = 'up'; acc = 0; }
acc += Math.abs(delta);
if (acc >= SHOW_AFTER_UP_PX) showMenu(y);
}

lastY = y;
}

window.addEventListener('scroll', function () {
if (!ticking) {
requestAnimationFrame(function () { onScroll(); ticking = false; });
ticking = true;
}
}, { passive: true });

// Стартовое состояние
showMenu(window.pageYOffset || 0);
});
</script>

Made on
Tilda