【发布时间】:2018-11-19 06:10:16
【问题描述】:
我正在尝试将“活动”类设置为页面上最可见的元素。使用此代码,我能够将页面上显示的元素设置为“活动”类。
我正在为我的无限滚动项目这样做。如果我可以为我的目标元素提供活动类,我可以更改社交媒体共享过程的页面 url 和标题。
$.fn.isInViewport = function() {
var elementTop = $(this).offset().top;
var elementBottom = elementTop + $(this).outerHeight();
var viewportTop = $(window).scrollTop();
var viewportBottom = viewportTop + $(window).height();
return elementBottom > viewportTop && elementTop < viewportBottom;
};
$(window).on('resize scroll', function() {
$('article').each(function() {
if ($(this).isInViewport()) {
$(this).addClass('active');
} else {
$(this).removeClass('active');
}
});
});
<article>
<h1>Title 1</h1>
<p>Text...
..
.</p>
</article>
<article>
<h1>Title 2</h1>
<p>Text2...
..
.</p>
</article>
<article>
<h1>Title 2</h1>
<p>Text2...
..
.</p>
</article>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
【问题讨论】:
-
你认为什么是“最显眼的”?例如,可以有一篇长篇文章,其标题未显示在一篇完整显示但占用较少视口的短篇文章之上