【问题标题】:Javascript - changing background color opacity with time intervalJavascript - 随时间间隔改变背景颜色不透明度
【发布时间】:2016-10-26 23:35:37
【问题描述】:

当我单击另一个元素时,我试图将背景颜色添加到 .top-barz 元素,但我想将其制作为持续时间为 1 秒的动画。我对 javascript 很陌生,不知道该怎么做?

我想从rgba(36,36,36, .1) 的不透明度更改为rgba(36,36,36, 1) 的动画

我已经想出了这段代码并将其放入我的点击功能中,但这显然不起作用:

var topBar = setInterval(function(){ topBarBackground() }, 1000);

function topBarBackground() {
  for (var i = 1; i <= 9; i++) {
    $('.top-barz').css('background-color', 'rgba(36,36,36,.' + i + ')');
  }
}

clearInterval(topBar);

【问题讨论】:

  • 使用 CSS 进行过渡,只需使用 jquery 在点击时添加一个类
  • 我该怎么做?

标签: javascript jquery


【解决方案1】:

你可以考虑jQuery的fadeIn函数。

$('.top-barz').fadeIn(10000);

【讨论】:

    【解决方案2】:

    这里有一些示例代码可以帮助您入门

    jQuery

    $('.button').on('click', function() {
     $('.top-barz').addClass('new-color');
    });
    

    CSS

    .top-barz {
     background-color:#000;
     -webkit-transition: background-color 1s linear;
     -moz-transition: background-color 1s linear;
     -o-transition: background-color 1s linear;
     -ms-transition: background-color 1s linear;
     transition: background-color 1s linear;
    }
    
    .top-barz.new-color {
     background-color:#eee;
    }
    

    显然,您可以将颜色更改为您的设计所需的任何颜色。

    编辑

    这里是Fiddle

    似乎在我的 chrome 中运行良好

    【讨论】:

    • 我尝试了你的建议,它似乎正在将类添加到元素中,但颜色没有改变,并且在 chrome 浏览器中检查元素时,它没有显示实际应用了该类。
    • 可能是因为我使用的是 Sass 并且有更多的 scss 文件吗?
    • 看我上面的小提琴
    【解决方案3】:

    Michael McCoy 的评论完全正确。我也会这样做,因为如果您使用 CSS,您也将从 GPU 加速中受益,这将使您的代码更轻。

    除此之外,您的代码有 2 个错误:

    • 缺少i++
    • 缺少var i

    _

    function topBarBackground() {
        for (var i = 1; i < 9; i++) {
            $('.top-barz').css("background-color", "rgba(36,36,36,." + i + ")");
          }
    }
    
    var myVar = setInterval(function(){topBarBackground()}, 1000);
    

    不管怎样,放弃这个想法。

    所以要添加类只需 $('.top-barz').addClass('changedColor');

    在css中:

    .top-barz {
      background-color: rgba(36,36,36,.1);
      -webkit-transition: 1s;
      -o-transition: 1s;
      transition: 1s;
    }
    .top-barz.changedColor {
      background-color: rgba(36,36,36,1);
    }
    

    【讨论】:

    • 请接受@michael McCoy 的回答,因为他已经发布了他的答案。他是第一个。您还纠正了++ ;)
    • 是的,谢谢,但由于某种原因,实际的类没有应用于元素,它被添加了,但我在 chrome 检查器中看不到它实际应用的任何地方?跨度>
    猜你喜欢
    • 1970-01-01
    • 2017-03-15
    • 2013-02-05
    • 2013-03-26
    • 2015-02-10
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多