Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2007
    Messaggi
    489

    cambiare colore in base a un numero

    ciao a tutti!


    dunque il mio problema di oggi é un po incasinato da spiegare.. ci provo..

    ho una variabile che contiene una percentuale. questa percentuale nel caso ideale non deve superare 100%. ma capiterį spesso che lo farį. piu bassa é la percentuale e meglio é.

    ho una tabella, e questa tabella avrį un colore di sfondo che dipenderį da questa percentuale. se la percentuale é bassa il colore sarį verde, se la percentuale sarį 100% il colore sarį giallo, se la percentuale supera il 100% sarį rossa. il problema ora é che il colore deve variare in base alla percentuale, cioé piu mi avvicino al cento e piu tenderį al giallo, piu mi avvicino al 50% e piu tenderį al verde (sotto il 50% é sempre verde) piu mi allontano verso l alto dal 100% e piu sarį rosso.. (oltre il 150% sarį sempre rosso)

    sapete indicarmi come posso fare una cosa del genere? a me basterebbe arrivare ad avere il codice html del colore salvato in una variabile.

    grazie

    ciao

    igor

  2. #2
    Studiati questo codice:

    Codice PHP:
    <?php 
    // from [url]http://forumdeli.com/14-php-function-to-convert-hsl-to-rgb-hexadecimal-notation[/url]
    function hsltorgb($h$s$l) {
        
    $l /= 100;
        if (
    $s == 0) {
            
    $l round(255*$l);
            return 
    sprintf('#%02x%02x%02x'$l$l$l);
        }
        
    $s /= 100;
        
    $h /= 360;
        
        
    $m2 = ($l<=0.5) ? $m2 $l*($s+1) : $l+$s-($l*$s);
        
        
    $m1 $l*$m2;
        
    $r hue($m1$m2, ($h+1/3));
        
    $g hue($m1$m2$h);
        
    $b hue($m1$m2, ($h-1/3));
        
        
    $h sprintf('%02x%02x%02x'round(255*$r), round(255*$g), round(255*$b) );
        
    $hex3 $h{0}.$h{2}.$h{4};
        return (
    $hex3 == $h{1}.$h{3}.$h{5}) ? '#'.$hex3 '#'.$h;
    }

    function 
    hue($m1$m2$h) {
        if(
    $h<0) ++$h;
        if(
    $h>1) --$h;
        
        if(
    $h 1/6) return $m1+($m2-$m1)*6*$h;
        if(
    $h 1/2) return $m2;
        if(
    $h 2/3) return $m1+($m2-$m1)*6*(2/3-$h);
        return 
    $m1;
    }

    function 
    green2red($percentage$saturation 99$lightness 50) {

        
    $percentage $percentage 100;
        
    $percentage = ($percentage 1.0) ? 1.0 $percentage;
        
    $percentage = ($percentage 0.0) ? 0.0 $percentage;

        
    $percentage 1.0 $percentage// invert percentage
        
        
    $hue = (70 255 360) * $percentage;  
        return 
    hsltorgb($hue$saturation$lightness);

    }

    print(
    '<table><tr>');
    for (
    $i 0$i <= 100$i++) {
        
    $color green2red($i);
        print(
    '<td height="20" bgcolor="' $color '" width="3"></td>');
    }
    print(
    '</tr></table>');

    ?>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.