首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >滚动时显示两个像素值之间的div

滚动时显示两个像素值之间的div
EN

Stack Overflow用户
提问于 2019-11-11 21:26:32
回答 2查看 172关注 0票数 0

我试图显示3div(按顺序和滚动方式),而只显示在每个div的两个像素值​​之间,但是我的脚本有一些地方我不明白:

我想展示的是:

  • div-1只在200到500 px之间可见。
  • div-2只在900到1200 px之间可见。
  • div-3只在1600至1900 px之间可见。

我在这里做错什么了?

演示 (JSFiddle)

另一方面,有没有更简单、更优雅的方法来做到这一点呢?

提前感谢!

凭证:

代码语言:javascript
复制
$(window).scroll(function() {

  if ($(this).scrollTop() > 200) {
  //if (document.body.scrollTop > 200 || document.documentElement.scrollTop < 500) {
    $('#div-1').fadeIn();   
  }
  else {
  $('#div-1').fadeOut();
  };

  if ($(this).scrollTop() > 900) {
  //if (document.body.scrollTop > 900 || document.documentElement.scrollTop < 1200) {
    $('#div-2').fadeIn();   
  }
  else {
  $('#div-2').fadeOut();
  };

  if ($(this).scrollTop() > 1600) {
  //if (document.body.scrollTop > 1600 || document.documentElement.scrollTop < 1900) {
    $('#div-3').fadeIn();   
  }
  else {
  $('#div-3').fadeOut();
  };

});

HTML:

代码语言:javascript
复制
<div id="div-1">Radio</div>
<div id="div-2">Blog</div>
<div id="div-3">Store</div>

<div id="content"></div>

CSS:

代码语言:javascript
复制
#div-1,#div-2,#div-3 {
  display:none;
  position:fixed;
  width:200px;
  height:60px;
  margin:0 auto;
  text-align:center;
  font-size:20px;
  line-height:60px
}

#div-1{background:#ff0;color:#000}
#div-2{background:#000;color:#fff}
#div-3{background:green;color:#fff}

#content{text-align:center;height:2500px}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-11 21:40:50

你只是想&&而已。

代码语言:javascript
复制
if ($(this).scrollTop() > 200 && $(this).scrollTop() < 500) {
    // ...
}
if ($(this).scrollTop() > 900 && $(this).scrollTop() < 1200) {
    // ...
}
if ($(this).scrollTop() > 1600 && $(this).scrollTop() < 1900) {
    // ...
}

如果滚动大于200,同时滚动小于500,则显示div-1。

下面是一个有用的示例:JSFiddle

票数 1
EN

Stack Overflow用户

发布于 2019-11-11 21:50:19

你错过了几件事:

  1. 所有的逻辑都应该使用&&而不是||
  2. 在显示或隐藏项目之前,您应该检查项目的可见性。
  3. 您应该始终存储对通常访问的DOM元素的引用,特别是当您在滚动事件处理程序中访问它们时(这会触发一堆)。

好吧,最后一点只是表演.但你应该知道!这里有一个最新的小提琴:

http://jsfiddle.net/xebgpduv/

下面是一个逻辑块的样子:

代码语言:javascript
复制
if (scrollTop > 200 && scrollTop < 500) {
    if(!$div1.is(':visible')) {
        $div1.fadeIn(); 
    }
} else if($div1.is(':visible')) {
    $div1.fadeOut();
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58808908

复制
相关文章

相似问题

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