首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取以视口顶部和底部为锚点的元素滚动百分比

获取以视口顶部和底部为锚点的元素滚动百分比
EN

Stack Overflow用户
提问于 2019-07-01 16:34:45
回答 1查看 519关注 0票数 1

如何获得元素滚动的百分比,但视口顶部为0%,底部为100%。这段代码向下滚动绿色的.wrapper元素,根据视口顶部设置百分比。当视口的底部(而不是顶部)通过.wrapper的底点(保留视口的顶部作为起点)时,我希望它是100%。

代码语言:javascript
复制
$(document).ready(function() {
  var el = $(".wrapper");
  var wrapperHeight = el.outerHeight();
  var wrapperTop = el.offset().top;
  var wrapperBottom = el.offset().top + wrapperHeight;


  $(window).bind('scroll', function() {
    var scrolled = $(window).scrollTop();
    if (scrolled > wrapperTop && scrolled < wrapperBottom) {
      var percentageScrolled = ((scrolled - wrapperTop) / wrapperHeight) * 100;
      $(".scrolled").text(parseInt(percentageScrolled));
    }
  });

});
代码语言:javascript
复制
.page {
  height: 10000px;
  background: red;
  padding-top: 1000px;
}

.wrapper {
  height: 1500px;
  background: green;
}

.scrolled {
  position: fixed;
  top: 10px;
  right: 30px;
  z-index: 1;
}
代码语言:javascript
复制
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="page">
  <div class="wrapper">

  </div>
</div>

<p class="scrolled"></p>

https://codepen.io/tornadokent/pen/wLyLvr

EN

回答 1

Stack Overflow用户

发布于 2019-07-01 17:56:54

这看起来像是Intersection Observer的作业

这样,您就可以在一个或多个元素(基于选择器)变得可见或离开页面时触发回调函数。

首先,您必须创建观察者:

代码语言:javascript
复制
var options = {
  rootMargin: '0px',
  threshold: 1.0
}

var observer = new IntersectionObserver(callback, options);

然后你设定一个应该关注的目标:

代码语言:javascript
复制
var target = document.querySelector('.wrapper');
observer.observe(target);

在此之后,您只需定义进入(在本例中为离开)视口的每个元素应该发生的情况:

代码语言:javascript
复制
var callback = function(entries, observer) { 
  entries.forEach(entry => {
    // Each entry describes an intersection change for one observed
    // target element:
  });
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56832426

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档