Поскольку я использую плагин Smooth-Scrollbar от idiotWu . Что касается установки скрипта, нам нужно пометить весь контент под тегом <main>
сразу после тега <body>
, чтобы вся страница могла прокручиваться, поэтому мы не можем определить положение прокрутки с помощью стандартной функции .
Я хочу установить условие, используя инструкции If и Else, заявив, что If <main class="wrapper">
или его дочерний элемент <div class="scroll-content">
, имеет transform: translate3d(0px, -400px, 0px)
, добавить фиксированный идентификатор в заголовок, иначе удалить фиксированный идентификатор из заголовок, все это с использованием прослушивателя событий. Это заставит заголовок отображаться вверху как фиксированный только при прокрутке, когда он достигнет left: 0px; top: -400px;
.
Ниже находится DOM и сценарий, который прослушивает offset.x и offset.y of <main class="wrapper">
и устанавливает такое же значение offset.x и offset.y равным <header id="fixed">
, что позволяет всегда держать заголовок наверху.
Вот DOM
<body>
<main class="wrapper">
<div class="root-content">
<header id="fixed">
<h2>My Header</h2>
</header>
<section>
</section>
</div>
</main>
</body>
Вот сценарий
// -- Plugin Initialization -- //
Scrollbar.use(OverscrollPlugin);
Scrollbar.init(document.querySelector('.wrapper'));
// -- Fixed Header -- //
var main_scrollbar = Scrollbar.init(document.querySelector('.wrapper'));
main_scrollbar.addListener(function(status) {
var offset = status.offset;
fixed.style.left = offset.x + 'px';
fixed.style.top = offset.y + 'px';
});
Вот как работает приведенный выше сценарий. Он выбирает значения преобразования из <div class="scroll-content">
и применяет значение, например style="left: 0px; top: 400px;"
к <header id="fixed">
, поэтому оно остается наверху.
Я хочу, чтобы заголовок появлялся вверху или фиксировал его только тогда, когда <div class="scroll-content">
имеет transform: translate3d(0px, -400px, 0px)
. Но при использовании сценария выше заголовок всегда фиксирован или закреплен, поэтому в этом случае требуется условный оператор if else для изменения указанного выше сценария, поэтому заголовок добавляется с id="fixed"
только тогда, когда <div class="scroll-content">
имеет transform: translate3d(0px, -400px, 0px)
.
CodePen: https://codepen.io/ToxifiedM/pen/WNrozbr