【问题标题】:How to increase opacity in javascript?如何增加javascript中的不透明度?
【发布时间】:2012-09-20 19:27:24
【问题描述】:

我希望能够使用

element.style.opacity += 0.1;

element.style.opacity = element.style.opacity + 0.1;

但这不起作用。不透明度不会改变。如果我将不透明度设置为静态值,例如

element.style.opacity = 0.5;

确实有效。我做错了什么?

【问题讨论】:

  • 很好奇为什么会被降级?

标签: javascript opacity


【解决方案1】:

element.style.opacity(假设它已被定义)将是一个字符串,而不是一个数字。

"0.1" + 0.1 === "0.10.1"

你可能想要:

element.style.opacity = parseFloat(element.style.opacity) + 0.1;

【讨论】:

    【解决方案2】:

    我突然想到,您实际上可以通过字符串因子降低不透明度,如下所示:

    element.style.opacity -= '0.1';
    

    这会很好,但不是相反,因为运算符 += 试图附加到结果字符串。然而,增量可以通过这样做来实现

    element.style.opacity -= '-0.1';
    

    这将根据需要增加它。

    【讨论】:

      【解决方案3】:

      我建议如下,如果尚未定义,它会为 opacity 分配一个预定义值:

      // using a simple onclick for demo purposes
      t.onclick = function(){
          var opacity = this.style.opacity;
          this.style.opacity = opacity ? (parseFloat(opacity) + 0.1) : 0.2;
      };​​​
      

      JS Fiddle demo.

      这似乎是必要的,因为如果opacity 尚未在内联style 属性中定义,则该值似乎不会增加。如果这是您的 定义的地方,那么这种方法可能没有必要。

      【讨论】:

        【解决方案4】:

        您可能希望在 css 中设置关键帧并将 id 或类添加到元素中

        Example for calling a keyframe:
        .myElement{
        position:absolute;
        background:blue;
        -webkit-animation:KeyframeName 1s linear infinite;
        }
        
        Example for a keyframe:
        @-webkit-keyframes KeyframeName {
        0%{style code here, example: opacity:1;}
        100%{style code here, example: opacity:0;}
        }
        

        唯一的缺点是: - 您必须为所有浏览器设置关键帧。 - 在移动设备上它需要大量的电量,这意味着您的页面变得不可触摸或无法点击。并且很难同时使用多个关键帧。

        或者

        尝试在javascript中创建一个函数并将这段代码放入其中:

        var OpacityValue = 1;
        function OpacityChange(){
            if(OpacityValue == 0.0){
                Opacity = 0.0;
                clearInterval(TimerName);
             }
             else if(OpacityValue > 0){
                OpacityValue += -0.1;
             }
             yourElement.style.opacity = OpacityValue;
        }
        

        使用计时器启动此功能,您将获得不透明度,当其值为 0.0 时将停止 不要忘记放置一个 var TimerName ;作为全局,否则你不能停止计时器!

        【讨论】:

          【解决方案5】:

          你也可以使用.toString();方法

          【讨论】:

            猜你喜欢
            • 2016-08-20
            • 2014-02-21
            • 1970-01-01
            • 2012-12-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多