javascript - 当 anchor 到达页面顶部时,获取 div 的背景颜色以淡入不同的颜色

标签 javascript jquery css

当 anchor 滚动到页面顶部时,我试图让背景颜色淡化。

<div id="footer_wrap">
<div class="anchor-point"> </div>

#footer_wrap {
margin-top: 200px;
height: 130vmax;
background-color: #f4f4f4;
opacity: 1;
transition-delay: 0s;
transition: ease-in-out .3s
}

#footer_wrap.topper {
transition: visibility 0s ease-in-out 0.3s, opacity 0.3s ease-in-out;
opacity: 0;
background-color: #000;
visibility: hidden
}


var scrollFn = function() {
var targetOffset = $(this).find(".anchor-point")[0].offsetTop;
console.log('Scrolling...');
if ($(this).scrollTop() > targetOffset) {
$(this).find(".#footer_wrap").addClass("topper");
} else {
$(this).find("#footer_wrap").removeClass("topper");
}
};

https://jsfiddle.net/t6tyjbz5/

最佳答案

您的代码有一些问题:

  1. 您从未将滚动功能分配给窗口滚动事件
  2. 语法错误/非函数(第 2 和 5 行)
  3. 您使用 $(this) 的方式不正确。事实上,$(this) 永远不会被设置,因为它没有被分配,当它被分配时,它会引用窗口。

更正的 Javascript:

function scrollFn() {

  var targetOffset = $(".anchor-point").offset().top;
  var w = $(window).scrollTop();

  if (w > targetOffset) {
    $("#footer_wrap").addClass("topper");
  } else {
    $("#footer_wrap").removeClass("topper");
  }
};
$(window).on('scroll', scrollFn);

此外,如果您想更改背景颜色,CSS 会简单得多:

#footer_wrap {
  margin-top: 200px;
  height: 130vmax;
  background-color: #f4f4f4;
  transition: background 0.3s ease-in-out ;
}
#footer_wrap.topper {
  background-color: #a0a0a0;
}

工作 fiddle :https://jsfiddle.net/t6tyjbz5/5/

关于javascript - 当 anchor 到达页面顶部时,获取 div 的背景颜色以淡入不同的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34702047/

相关文章:

javascript - Angularjs 输入类型 = 文件不控制台数据

HTML CSS flexbox 图像和文本

css - Sass 每个函数都在其前面加上美元符号进行编译

javascript - 获取最接近随机数的 1000 的数字

javascript - 如何在vscode扩展中打开本地(扩展包内)文件

javascript - 为什么 bluebird Promise 中的异步函数抛出的错误没有被 .catch() 函数捕获?

javascript - 如何在 jquery mobile 中打开一个外部 html 页面作为弹出窗口?

javascript - 无法将 iframe 从一个 div 复制到另一个 div?

javascript - 如何在递归生成的 <select> 下拉列表中附加回调?

css - 博主主页奇怪的空白代码