from green to red color depend on percentage

前端 未结 14 2059
北恋
北恋 2020-11-30 20:00

I have a poll system and I want answers for this poll to be colored. For example: If it\'s 10% it would be red, if 40% it would be yellow and if 80% it would be green, so I

14条回答
  •  夕颜
    夕颜 (楼主)
    2020-11-30 20:48

    Based on Jacobs answer I made a loadbar. This one is from green to red, but you can change the colors. For those interested here's my code and the jsfiddle ( http://jsfiddle.net/rxR3x/ )

    var percentColors = [
        { pct: 0, color: '#00FF00' },   { pct: 3, color: '#12FF00' },   { pct: 6, color: '#24FF00' },
        { pct: 10, color: '#47FF00' },  { pct: 13, color: '#58FF00' },  { pct: 16, color: '#6AFF00' },
        { pct: 20, color: '#7CFF00' },  { pct: 23, color: '#8DFF00' },  { pct: 26, color: '#9FFF00' },
        { pct: 30, color: '#B0FF00' },  { pct: 33, color: '#C2FF00' },  { pct: 36, color: '#D4FF00' },
        { pct: 40, color: '#E5FF00' },  { pct: 43, color: '#F7FF00' },  { pct: 46, color: '#FFF600' },
        { pct: 50, color: '#FFE400' },  { pct: 53, color: '#FFD300' },  { pct: 56, color: '#FFC100' },
        { pct: 60, color: '#FFAF00' },  { pct: 63, color: '#FF9E00' },  { pct: 66, color: '#FF8C00' },
        { pct: 70, color: '#FF7B00' },  { pct: 73, color: '#FF6900' },  { pct: 76, color: '#FF5700' },
        { pct: 80, color: '#FF4600' },  { pct: 83, color: '#FF3400' },  { pct: 86, color: '#FF2300' },
        { pct: 90, color: '#FF1100' },  { pct: 93, color: '#FF0000' },  { pct: 96, color: '#FF0000' },
        { pct: 100, color: '#FF0000' }
    ];
    var getColorPercent = function(selector, percent, time){
        var i = 0;
        var percentInterval = setInterval(function() {
             i++;
             if(percent >= percentColors[i].pct) {
                console.log(percentColors[i].color);
                $(selector).css('background-color', percentColors[i].color);
            }
            if(percentColors[i].pct>=percent) {
                clearInterval(percentInterval);
            }
        }, time/25);
        $(selector).animate({width:(200/100)*percent}, time);
    }
    getColorPercent('#loadbar_storage', 100, 1500);
    

    var percentColors = [
        { pct: 0, color: '#00FF00' },	{ pct: 3, color: '#12FF00' },	{ pct: 6, color: '#24FF00' },
        { pct: 10, color: '#47FF00' },	{ pct: 13, color: '#58FF00' },	{ pct: 16, color: '#6AFF00' },
        { pct: 20, color: '#7CFF00' },	{ pct: 23, color: '#8DFF00' },	{ pct: 26, color: '#9FFF00' },
        { pct: 30, color: '#B0FF00' },	{ pct: 33, color: '#C2FF00' },	{ pct: 36, color: '#D4FF00' },
        { pct: 40, color: '#E5FF00' },	{ pct: 43, color: '#F7FF00' },	{ pct: 46, color: '#FFF600' },
        { pct: 50, color: '#FFE400' },	{ pct: 53, color: '#FFD300' },	{ pct: 56, color: '#FFC100' },
        { pct: 60, color: '#FFAF00' },	{ pct: 63, color: '#FF9E00' },	{ pct: 66, color: '#FF8C00' },
        { pct: 70, color: '#FF7B00' },	{ pct: 73, color: '#FF6900' },	{ pct: 76, color: '#FF5700' },
        { pct: 80, color: '#FF4600' },	{ pct: 83, color: '#FF3400' },	{ pct: 86, color: '#FF2300' },
        { pct: 90, color: '#FF1100' },	{ pct: 93, color: '#FF0000' },	{ pct: 96, color: '#FF0000' },
        { pct: 100, color: '#FF0000' }
    ];
    var getColorPercent = function(selector, percent, time) {
      var i = 0;
      var percentInterval = setInterval(function() {
        i++;
        if (percent >= percentColors[i].pct) {
          $(selector).css('background-color', percentColors[i].color);
        }
        if (percentColors[i].pct >= percent) {
          clearInterval(percentInterval);
        }
      }, time / 25);
      $(selector).animate({
        width: (200 / 100) * percent
      }, time);
    }
    getColorPercent('#loadbar', 100, 1500);
    #loadbar_wrapper {
      width: 200px;
      height: 25px;
      border: 1px solid #CECECE;
    }
    
    #loadbar {
      width: 0px;
      height: 25px;
    }
    
    

提交回复
热议问题