$.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
@@というやって問題を持っている – Chiller