使用$.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
你应该检查的jQuery的URL,如果它的正确 – Chiller