Используйте $.offset()
, чтобы получить положение элемента относительно документа.
bottomScrollValue
- позиция документа scrollTop
для того, чтобы #trigger
был видимым в нижней части окна.
Помните, что scrollTop
- это длина части документа, которая была прокручена вверх.
В фрагменте я использовал $(window).height()
, чтобы получить высоту фрагмента, но он не будет работать должным образом на собственных страницах. Вместо этого вы должны использовать document.body.clientHeight
для собственных страниц.
(function($, window, document) {
var triggerScroll = $('#trigger').offset().top;
$(document).on('scroll', function() {
var bottomScrollValue = $(document).scrollTop() + ($(window).height());
if (bottomScrollValue >= triggerScroll) {
setTimeout(function() {
var show = $('#triggerShow');
show.removeClass('hidden');
}, 1000);
} else {
$('#triggerShow').addClass('hidden');
}
});
$('#filler').on('click', function() {
var triggerPosition = 0;
\t var triggerTop = $('#trigger').offset().top;
\t var windowHeight = $(window).height(); // Use document.body.clientHeight for native (non-iFrame) page
\t if (triggerTop < windowHeight) {
\t \t triggerPosition = windowHeight - triggerTop + $('#triggerShow').height();
\t } else {
\t \t triggerPosition = triggerTop - windowHeight + $('#triggerShow').height();
\t }
$('body').animate({
scrollTop: triggerPosition
}, 500);
});
})(window.jQuery, window, document);
#filler { height: 1000px; cursor: pointer; }
#triggerShow { transition: opacity .3s; opacity: 1; }
#triggerShow.hidden { opacity: 0; }
#trigger { padding-bottom: 100px; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="filler">Filler</div>
<div id="triggerShow" class="hidden">to StackOverflow</div>
<div id="trigger">Welcome</div>
ваш вопрос вы можете сделать это, или у вас есть проблема, что делать – Chiller
у меня есть проблема, делая это @@ – easonchiu
вы должны проверить URL в JQuery, если его правильно – Chiller