滚动上的褪色元素

时间:2009-09-27 20:59:31

标签: javascript html scroll visibility fade

我很好奇如何在用户向下滚动页面时创建可以淡化(或改变不透明度)的DIV(或任何真正的东西)。此DIV将位于页面顶部,但只有在页面顶部才能清晰显示。

此外,如果我可以让这个元素在onmouseover中淡出,这将是理想的,无论页面上当前的滚动位置如何。

3 个答案:

答案 0 :(得分:8)

jQuery将允许一个简洁的解决方案,同时隐藏大多数浏览器差异。这是一个快速模拟,可以帮助您入门:

<script type="text/javascript">

    //when the DOM has loaded
    $(document).ready(function() {

        //attach some code to the scroll event of the window object
        //or whatever element(s) see http://docs.jquery.com/Selectors
        $(window).scroll(function () {
              var height = $('body').height();
              var scrollTop = $('body').scrollTop();
              var opacity = 1;

              // do some math here, by placing some condition or formula
              if(scrollTop > 400) {
                  opacity = 0.5;
              }

              //set the opacity of div id="someDivId"
              $('#someDivId').css('opacity', opacity);
        });
    });
</script>

另见:

答案 1 :(得分:2)

我以为我会使用scrollTop的实际值来指示不透明度级别,从而获得平滑的淡入淡出。我还为第二部分添加了悬停状态。 Thanks to David为我提炼数学。

//reduce the opacity of the banner if the page is scrolled.
$(window).scroll(function () {
  var height = $("body").height();
  var scrollTop = $("body").scrollTop();
  var opacity = 1;

  if(scrollTop < 41)
    {opacity = 1-Math.floor(scrollTop)/100;}
    else
    {opacity = 0.6;}

  $("#header").css("opacity", opacity);
  $("#header").hover(function(){
    $(this).css("opacity", 1);
    },function(){
    $(this).css("opacity", 0.6);
    });
});

答案 2 :(得分:0)

使用滚动事件,并分析document.documentElement.scrollTop的值以设置适当的不透明度。 http://www.quirksmode.org/dom/events/scroll.html