窗口滚动不适用于其他情况

赛拉

我正在使用该scroll函数,但是else if块中的代码似乎未在执行。

一旦用户滚动到某个点,我试图隐藏一个div并显示另一个div。

这是我的代码-我在做什么错?

var scrolTop = $('.content').offset().top;
var showOneHeight = $('.showOne').height();
var showTwoHeight2 = $('.showTwo').height();
var showThreeHeight3 = $('.showThree').height();
var showFourHeight4 = $('.showFour').height();
var offSetValue = scrolTop + (showOneHeight - 50);
var offSetValue2 = scrolTop + (showTwoHeight2 - 50);
var offSetValue3 = scrolTop + (showThreeHeight3 - 50);
var offSetValue4 = scrolTop + (showFourHeight4 - 50);
// alert(offSetValue3)
$(window).scroll(function() {
  var height = $(window).scrollTop();
  if (height > offSetValue) {
    $('.showOne').fadeOut();
    $('.showTwo').fadeIn('slow');
  } else if (height > offSetValue2) {
    $('.showOne').fadeOut();
    $('.showTwo').fadeOut();
    $('.showThree').fadeIn('slow');
  } else if (height > offSetValue3) {
    $('.showOne').fadeOut();
    $('.showTwo').fadeOut();
    $('.showThree').fadeOut();
    $('.showFour').fadeIn();
  }
});
body {
  margin: 0px;
}

.contentArea {
  display: flex;
  height: 100vh;
}

.boxes {
  width: 50%;
}

.pinned {
  background: rgb(72, 91, 35);
}

h1 {
  position: relative;
  top: 50%;
  transform: translateY(-50%);
  margin: 0;
  padding: 20px;
  text-transform: capitalize;
  font-family: system-ui;
  color: #fff;
}

.content {
  position: relative;
}

.box {
  position: absolute;
  left: 0px;
  top: 50%;
  transform: translateY(-50%);
  display: none;
}

.showOne {
  display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>
<div style="height: 500px; background: violet;"></div>
<div style="height: 500px; background:yellowgreen;"></div>
<div class="contentArea">
  <div class="pinned boxes">
    <h1>i am pinned side</h1>
  </div>
  <div class="content boxes">
    <div class="box showOne">
      <strong>paragraph one</strong>
      <p>i am a paragraph. i have more text then a heading mostly too lines i have.</p>
    </div>
    <div class="box showTwo">
      <strong>paragraph two</strong>
      <p>i am a paragraph. i have more text then a heading mostly too lines i have.</p>
    </div>
    <div class="box showThree">
      <strong>paragraph three</strong>
      <p>i am a paragraph. i have more text then a heading mostly too lines i have.</p>
    </div>
    <div class="box showFour">
      <strong>paragraph three</strong>
      <p>i am a paragraph. i have more text then a heading mostly too lines i have.</p>
    </div>
  </div>
</div>
<div class="test" style="height: 500px; background: rgb(39, 96, 106);"></div>
<div style="height: 500px; background: rgb(46, 35, 46);"></div>

gianni10049
  if (height > offSetValue) {
    $('.showOne').fadeOut();
    $('.showTwo').fadeIn('slow');
  } else if (height > offSetValue2) {
    $('.showOne').fadeOut();
    $('.showTwo').fadeOut();
    $('.showThree').fadeIn('slow');
  } else if (height > offSetValue3) {
    $('.showOne').fadeOut();
    $('.showTwo').fadeOut();
    $('.showThree').fadeOut();
    $('.showFour').fadeIn();
  }

问题是如果有其他条件。else if如果第二个和第三个为真时第一个条件为真,则不执行。

您需要指定高度之间的范围是真的:

if ( (height > offSetValue) && (height < offSetValue2)) {
     //exec
} 
else if ( (height > offSetValue2) && (height < offSetValue3)) {
   //exec
}
else if (height > offSetValue3) {
  // exec
} 

这解决了如果/否则(Y)的问题

编辑1:

试试这个来确认:

var scrolTop = $('.content').offset().top;
var showOneHeight = $('.showOne').height();
var showTwoHeight2 = $('.showTwo').height();
var showThreeHeight3 = $('.showThree').height();
var showFourHeight4 = $('.showFour').height();
var offSetValue = scrolTop + 500;
var offSetValue2 = scrolTop + 700; 
var offSetValue3 = scrolTop + 900;
var offSetValue4 = scrolTop + 1100;


$(window).scroll(function() {
  var height = $(window).scrollTop();

  if ( (height > offSetValue) && (height < offSetValue2)) {
    console.log(1)
    $('.showOne').fadeOut();
    $('.showTwo').fadeIn('slow');
    $('.showThree').fadeOut();
    $('.showFour').fadeOut();
  } else if ( (height > offSetValue2) && (height < offSetValue3)) { 
    console.log(2)
    $('.showOne').fadeOut();
    $('.showTwo').fadeOut();
    $('.showThree').fadeIn('slow');
    $('.showFour').fadeOut();
  } else if (height > offSetValue3) {
    console.log(3)
    $('.showOne').fadeOut();
    $('.showTwo').fadeOut();
    $('.showThree').fadeOut('slow');
  }
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

方法重载不适用于其他参数

RecyclerView滚动不适用于NestedScrollView

神经网络适用于交叉熵,不适用于其他损失函数

AllowAnyMethod适用于某些API调用,但不适用于其他API调用

背景图片仅适用于首页,而不适用于其他图片

Codeigniter文件上传许可仅适用于图像,不适用于其他图像

子集不适用于某些数值,但适用于其他数值

滚动功能适用于某些单击事件,但不适用于其他事件

FluentValidation不适用于其他库

jQuery Enter键不适用于其他表单

apache2不适用于其他端口

通用排序适用于整数,但不适用于其他类型

ActionPerformed方法不适用于其他类

无效的窗口滚动不适用于Excel

.htaccess重定向仅适用于某些页面,而不适用于其他页面

代码适用于一种情况,但不适用于其他情况

静态库不适用于其他设备

视差滚动适用于1张图像,但不适用于其他图像

通用JS函数适用于某些div,不适用于其他div

代码适用于图像,但不适用于Codeigniter中的其他文件

媒体查询不适用于某些类的Bootstrap,但适用于其他类

水平滚动不适用于鼠标

平滑滚动适用于导航栏,但不适用于其他元素(箭头等)

编码适用于 1 而不适用于 Twitter 中使用 python 的其他列表

悬停格式仅适用于 $ 符号,不适用于其他货币?

MongoDB geoNear 不适用于某些坐标但适用于其他坐标

ActionListener 不适用于其他类

@font-face 不适用于 chrome 但适用于其他浏览器

SVG 线性渐变不适用于其他元素