Jquery在滚动上动画div不透明度

Posted

技术标签:

【中文标题】Jquery在滚动上动画div不透明度【英文标题】:Jquery animate div opacity on scroll 【发布时间】:2013-06-26 11:50:04 【问题描述】:

所以我正在尝试基于滚动浏览器窗口来为 css 属性设置动画。 下面的代码到目前为止工作,但我希望它有一个过渡,而不是突然从不透明度 1 到不透明度 0.5。任何帮助表示赞赏。提前致谢。

$(document).ready(function()
$(window).scroll(function()
    if ($(window).scrollTop() > 50)
        $('.header').css('background','rgba(200, 54, 54, 0.5)');
    
    else if ($(window).scrollTop() < 50)
        $('.header').css('background','rgba(200, 54, 54, 1)');
    
);

);

这是一个jsfiddle 到目前为止的代码链接

【问题讨论】:

【参考方案1】:

你可以的

 $(window).scroll(function()
    if ($(window).scrollTop() > 50)
        $('.header').css('background','rgb(200, 54, 54)').stop().animate("opacity":".5",1000)
    
    else if ($(window).scrollTop() < 50)
        $('.header').css('background','rgb(200, 54, 54)').stop().animate("opacity":"1",1000)
    
);    

http://jsfiddle.net/XXjZW/2/

【讨论】:

谢谢。这段代码和下面的例子很好用,但它给我带来了另一个问题。如何通过影响标题 div 内的 h1 标签来设置背景不透明度的动画?【参考方案2】:

你可以使用CSS3属性transition

.header
    -webkit-transition:background 1s;
    -moz-transition:background 1s;
    -o-transition:background 1s;
    transition:background 1s;

【讨论】:

【参考方案3】:

给你的 css 过渡 ->

transition:background 1s;

http://jsfiddle.net/XXjZW/6/

【讨论】:

【参考方案4】:

如果你想兼容不支持 CSS3 的浏览器,我建议你使用 jQuery UI 库:

  $('.header').animate(
      backgroundColor: "#aa0000"
  , 1000);

活生生的例子:http://jsfiddle.net/XXjZW/8/

您需要在包含 jQuery 库时包含它:

<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.1/jquery-ui.min.js"></script> 

【讨论】:

以上是关于Jquery在滚动上动画div不透明度的主要内容,如果未能解决你的问题,请参考以下文章

jQuery:在 IE 中动画不透明度

使用 jQuery 调整 CSS 不透明度与元素的滚动

jQuery - IE8 中的动画不透明度

jQuery 不透明度动画在 Internet Explorer 中扭曲定位

jQuery:动画元素位置和不透明度一起

滚动到位置的jQuery动画不起作用