Я хочу, чтобы моя строка .row-navigation
при прокрутке была position-fixed
. Поэтому я использовал window.onscroll
, чтобы прослушать событие прокрутки и присвоить классу .sticky
строку .row-navgation
при прокрутке. В процессе используется getBoundingClientRect().top
.
Неожиданное поведение:
Когда происходит событие прокрутки, то getBoundingClientRect().top
возвращает 0
с каждой прокруткой альтернативного пикселя.
В результате Строка .row-navigation
мигает при прокрутке
Проверьте это на codepen https://codepen.io/neel111/pen/NVaEyB
<div class="container">
<div class="row-welcome"></div>
<div class="row-navigation"></div>
</div>
.row-welcome {
height: 34px;
background-color: yellow;
}
.row-navigation {
height: 80px;
background-color: #000;
}
.row-navigation.sticky {
position: fixed;
top: 0;
width: 100%;
}
window.onscroll = function() {
var rowNavigation = document.querySelector('.row-navigation');
var nextDomElement = rowNavigation.parentElement.nextElementSibling;
console.log(rowNavigation.getBoundingClientRect().top, rowNavigation.getBoundingClientRect().right, rowNavigation.getBoundingClientRect().bottom);
if (0 > rowNavigation.getBoundingClientRect().top) {
rowNavigation.classList.add('sticky');
} else {
rowNavigation.classList.remove('sticky');
}
}
Как исправить неожиданное поведение getBoundingClientRect().top
?