【问题标题】:How to change background color from transparent to black gradually on window scroll如何在窗口滚动时逐渐将背景颜色从透明更改为黑色
【发布时间】:2017-05-12 11:16:56
【问题描述】:

我正在尝试实现类似于下面视频中的效果,但经过多次搜索后我没有找到任何东西:

https://d.pr/oKFD

我有一个像这样的简单 html:

<div class="item">
<a class="my-img-url-class" href="some-url"><img src="my-url/my-img.jpg" class="img-class"></a>
</div>

我之前所做的一切都是使用下面的代码使其仅在淡入效果中起作用,但这不是我所需要的:

var divs = $('.item');
$(window).on('scroll', function() {
   var st = $(this).scrollTop();
   divs.css({ 'opacity' : (1 - st/350) });
});

我需要一个 div/图像的背景颜色,以便在窗口滚动时逐渐从透明变为黑色。

【问题讨论】:

    标签: javascript css scroll scrollview background-color


    【解决方案1】:

    您不需要 jquery 来实现这一点。这是你应该写的:

    function myScroll() {
      var scrolled = document.documentElement.scrollTop; // Firefox & IE
      var SCROLLED = document.body.scrollTop // Chrome, Safari & Opera
      var divs = document.querySelectorAll('.item')
      var opac = 1 - 360 / scrolled;
      var OPAC = 1 - 360 / SCROLLED;
      var i;
      for (i = 0; i < divs.length; i++) {
        divs[i].style.opacity = opac;
        divs[i].style.opacity = OPAC;
      }
    }
    document.addEventListener("scroll", myScroll);
    

    【讨论】:

    • 谢谢@Wais,但我猜你的代码有问题,因为检查元素项目div不透明度保持不变为1,即使我滚动与否:&lt;div class="item" style="opacity: 1;"&gt;
    • 我在 chrome 上试过了。它运作良好。如果您遇到任何问题,只需检查脚本是否放置在 &lt;body&gt; 标记中的最后一个元素,而不是 &lt;head&gt; 标记中。
    • 抱歉,我需要一个从 0 到 1 的深色叠加层而不是不透明度。
    猜你喜欢
    • 2011-02-12
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 1970-01-01
    相关资源
    最近更新 更多