Я ищу способ определить, касается ли какая-либо часть элемента div верхнюю часть области просмотра, и зафиксировать элемент в этом элементе на верхней части области просмотра, используя ваниль javascript.
I были в состоянии разобраться, как определить, касается ли div верхней части области просмотра и вызвать изменения стиля div. Но по какой-то причине, когда я изменяю div position: absolute
на position: fixed
, div фиксируется в верхней части документа, а не в верхней части области просмотра, поэтому не отображается.
My js
function touchTop() {
var div = $('itin');
var rect = div.getBoundingClientRect();
var y = rect.top;
var h = rect.bottom;
if ((y < 0) && (h > 0)) {
document.getElementById('seemore').style.position = 'fixed';
document.getElementById('seemore').style.top = '45%';
} else {
document.getElementById('seemore').style.position = 'absolute';
document.getElementById('seemore').style.top = '66px';
}
}
window.addEventListener('scroll', touchTop);
Основа c дел HTML
<div id="itin" class="container">
<div class="sp20"></div>
<div class="text rgt">
<h3>your daily adventures</h3>
<p>blah blah blah</p>
</div>
<div id="seemore" class="ghstbtn">See More</div>
</div>
И основ c начальная CSS
#seemore {
width: auto;
position: absolute;
top: 66px;
right: 20px;
}
Для уточнения далее: Моя проблема, которую нужно решить, заключается в том, что когда javascript меняет style.position на фиксированный, #seemore div позиционируется так, что значение 'top' измеряется сверху документа, а не сверху окно просмотра. Так что в основном не виден в окне просмотра.