我正在寻找检查元素上背景色的值的方法,如果该值是rgba值,我想获取Alpha通道并查看其值是否小于1。但是如果背景色不是,则返回/退出。不是rgba值,即它是十六进制值还是rgb值。

我觉得正则表达式是实现此目的的最佳方法,但是经过一番挠头之后,我感到茫然,而正则表达式并不是我的最强技能!

这是我已经拥有的,TODO是我需要一点帮助的事情

  var hasOpacity = false;
  var backgroundColor = $('.elemment-class').css('background-color');

  // backgroundColor could return:
  // (string / bool)
  // - null             - IGNORE
  // - transparent      - IGNORE
  // - #000             - IGNORE
  // - #FFFFFF          - IGNORE
  // - rgb(0,0,0)       - IGNORE
  // - rgba(0, 0, 0, 0.4)
  //                  ^ I need this value if it's floating
  // - rgba(0, 0, 0, 1)
  //                 ^ Or this value if it's integer


  function checkIfBackgroundHasAlpha(backgroundColor) {
     // @TODO If background value is any of the "IGNORE"s return because we don't need to do anything
     // only continue if the value is rgba

     // Its rgba so lets process
     if (isAplpa === true) {

        // @TODO First grab the alpha section of the rgba colour (REGEX perhaps?)
        // i.e rgba(255, 255, 255, 0.4)
        //                          ^
        // or rgba(6, 39, 123, 1)
        //                     ^

        // @TODO Then convert that value from a string to a number

        // Then run my validation
        if (alphaNumber < 1) {
           // Now that I know it's got an opacity lets do what I need plus
           // set our var to true for later use
           hasOpacity = true;
        }

     }
  }

  // Run the check
  checkIfBackgroundHasAlpha(backgroundColor);

  if (hasOpacity) {
     // Yay we're here
     console.log('Yep we have Opacity on this');
  }

谢谢

最佳答案

您根本不需要正则表达式,实际上,如果您有一组特定的输入类型,则可以大大简化此方法。

function hasOpacity(str) {
    if (str) {
        var tmp = str.split(',')[3];
        if (tmp) {
            var val = parseFloat(tmp);
            return (!isNaN(val) && val < 1);
        }
    }
    return false;
}
hasOpacity("rgba(0, 0, 0, 0.4)"); //true
hasOpacity("rgba(0,0,0,1)"); //false
hasOpacity(null); //false
hasOpacity("#FFFFFF"); //false

关于javascript - 将Alpha值与背景色隔离,从字符串转换为数字,然后验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31564460/

10-11 17:55