0

オブジェクト bgcolor を明るくまたは暗く変更する jQuery 関数を作成しようとしています (パラメーターを色のトーンの違いとして設定します)。そして、うまくいくはずだと思いますが、ひびが入ります。

$.fn.changeBg = function(difference){




    var hexToRgb = function(hex) {
        var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
        return result ? {
            r: parseInt(result[1], 16),
            g: parseInt(result[2], 16),
            b: parseInt(result[3], 16)
        } : null;
    }

    var rgbToHex = function(r, g, b) {
        return "#" + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);
    }

    //returns color n-tones lighter or darker (for negavitve values) from given.
    var changeColor = function(hex,tones){
        var rgb = hexToRgb(hex);
        rgb.r+=tones;
        rgb.g+=tones;
        rgb.b+=tones;

        rgb.r=rgb.r>255?255:rgb.r;
        rgb.r=rgb.r<0?0:rgb.r;

        rgb.g=rgb.g>255?255:rgb.g;
        rgb.g=rgb.g<0?0:rgb.g;

        rgb.b=rgb.b>255?255:rgb.b;
        rgb.b=rgb.b<0?0:rgb.b;

        var hex = rgbToHex( rgb.r , rgb.g , rgb.b );
        return hex;
    }

    var bgColor = $(this).css('background-color');
    var secColor = changeColor(bgColor,difference);
    $(this).css('background-color',secColor);

}

フィドル- それの何が問題なのですか?

4

3 に答える 3

2

bgColor元のCSSに関係なく、必ずしも#RRGBBフォーマットである必要はありません。次のいずれかになります。

  • #RRGGBB
  • #RGB
  • rgb(R、G、B)
  • rgba(R、G、B、A)
  • 名前

そして、それらのそれぞれを解析する必要があります。

JavaScriptソースの元の色を適切な形式のどこかに置くことができれば、はるかに簡単になります。

于 2013-01-25T22:01:09.687 に答える