【问题标题】:Why isn't fade div to black on scroll working?为什么滚动工作时不将 div 淡化为黑色?
【发布时间】:2021-09-14 16:17:30
【问题描述】:

我尝试使用 scrollY 和简单的查询选择器创建淡入黑色,但我终其一生都无法弄清楚为什么它可能无法正常工作? 应该是把背景色hsl的l值降为0的简单案例,下面是我的代码:

const lightness = 100;
const body = document.querySelector('.body')

window.addEventListener('scroll', () => {
  const y = window.scrollY
  newLightness = (lightness - y/10)
  if (newLightness < 0) {
    newLightness = 0;
  }
  body.style.backgroundColor = `hsl(0, 0, ${newLightness})`
})

【问题讨论】:

标签: javascript css scroll fade


【解决方案1】:

两个变化:

  1. document.querySelector('body') :如果您使用 .body,您正在搜索具有类名主体的 first 元素。对于 div/body/span 等标签,您可以简单地使用不带任何符号的标签名称。
  2. 在hsl 中,饱和度和亮度以% 为单位;
let lightness = 100;
const body = document.querySelector('body')

window.addEventListener('scroll', () => {
  const y = window.scrollY
  let newLightness = (lightness - y/10) //Added the let keyword
  if (newLightness < 0) {
    newLightness = 0;
  }
  body.style.backgroundColor = `hsl(0, 0%, ${newLightness}%)`
})

此外,根据您的需要使用 let/var 等声明变量的好习惯。

【讨论】:

    【解决方案2】:

    你非常亲密。首先,我想说的是,当您的 querySelector 正在寻找课程时,请确保您的 body 标签上确实有 class="body"。其次,hsl()值中的第二个和第三个参数后面需要跟百分号...

    body.style.backgroundColor = hsl(0, 0%, ${newLightness}%)

    【讨论】:

    • 是的 class="body" 等,仍然没有运气。我之前肯定用 RGB 值实现了这一点,使用 HSL 不会有问题吗?
    • 您的窗口上是否有另一个scroll eventListener 定义在这个上面?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 2020-12-06
    相关资源
    最近更新 更多