Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Tabella con valori di colori diversi

    Ciao a tutti! Ho cercato di mettere un titolo che non fosse troppo lungo ma che spiegasse bene qual'è il mio problema, ma non penso di esserci riuscito.. :S

    Allora quello che dovrei fare è:

    - Creare una tabella con tre colonne e righe variabili in base alla colonna;
    - In ogni colonna ci dovranno essere due parti: una caratteristica ed un valore associato ad essa;
    - Il valore sarà esclusivamente numerico compreso tra 0-99 e vorrei che avesse diversi colori in base al suo valore.

    Io avevo pensato a qualcosa del genere per iniziare:

    codice:
    <table>
    	<tr>
    		<td> <h3> Attributi di tipo A</h3></td>
    		<td> <h3> Attributi di tipo B</h3></td>
    		<td> <h3> Attributi di tipo C</h3></td>
    	</tr>
    	<tr>
    		<td>
    			???
    		</td>
    		<td>
    			???
    		</td>
    		<td>
                            ???
                    </td>
    	</tr>
    	<tr>
    		<td> 
    			???
    		</td>
    		<td> 
    			???
    		</td>
    		<td> 
    		</td>	
    	<tr>
    	<tr>
    		<td> 
    			???
    		</td>
    		<td> 
    		</td>
    		<td> 
    		</td>	
    	</tr>		
    </table>
    Questo nel caso gli attributi di tipo A siano 3, quelli di tipo 2, e quelli di tipo C 1.

    La mia prima domanda è: al posto di ??? per differenziare il nome della caratteristica ed il valore metto un'altra tabella annidata o due div affiancati? (io sarei più propenso per due div affiancati)

    La seconda è appunto come fare che il valore numerico sia di colore diverso in base al valore dando per certo che esso sia un numero tra 1-99 e non sia necessario alcun controllo ulteriore.

    Per ora questi valori per li sto assegnando staticamente, poi farò delle funzioni in php che potranno anche modificarli, però al momento mi sto concentrando sull'architettura delle pagine in modo statico.

    Grazie mille a tutti in anticipo!

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,780
    Ciao, senza andare ad inserire altri elementi potresti suddivirere ciascuna colonna in altre due colonne e utilizzare il colspan sulle intestazioni.
    Per la formattazione dei gruppi di colonne ti direi di usare il <colgroup> (un esempio qui) in modo da poter formattare differentemente i due gruppi (caratteristica e valore) ma so che con questo metodo alcuni browser gestiscono male o non supportano varie regole css, per cui ti consiglio di utilizzare il semplice css selezionando a dovere i td.

    Ecco un esempio pratico:
    codice:
    <!DOCTYPE html>
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>CSS - Formattazione gruppi colonne tabella</title>
        
        <style type="text/css">
          table{
            border-collapse:collapse;
            font:10pt sans-serif;
          }
          th,td{
            border:2px solid #dec;
            padding:7px;
          }
          th{
            padding:5px 15px;
            text-align:center;
            color:#fff;
            background:#6a5;
          }
    
          /* colonne caratteristica */
          td,td+td+td,td+td+td+td+td{
            background:#fff;
            text-align:right;
            font-style:italic;
            color:#390;
          }
    
          /* colonne valore */
          td+td,td+td+td+td,td+td+td+td+td+td{
            background:#dec;
            text-align:center;
            font-style:normal;
            color:#000;
          }
        </style>
      
      </head>
      <body>
        <table>
          <tr>
            <th colspan="2">Attributi di tipo A</th>
            <th colspan="2">Attributi di tipo B</th>
            <th colspan="2">Attributi di tipo C</th>
          </tr>
          <tr>
            <td>a1</td>
            <td>10</td>
            
            <td>b1</td>
            <td>30</td>
            
            <td>c1</td>
            <td>1</td>
          </tr>
          <tr>
            <td>a2</td>
            <td>15</td>
            
            <td>b2</td>
            <td>40</td>
          </tr>
          <tr>
            <td>a3</td>
            <td>99</td>
          </tr>		
        </table>
      </body>
    </html>
    Nota, per definire le celle nella riga di intestazione della tabella ho utilizzato i tag <th> così da ottenere una struttura più logica e poter intervenire più efficacemente col css. Questo è preferibile rispetto al tuo <td><h3>. Inoltre ho ho inserito il colspan che serve appunto per unire le celle mentre nel corpo della tabella i td restano divisi in due colonne separate che identificano appunto "caratteristica" e "valore".

    Mentre la formattazione in base al valore non è possibile gestirla attraverso i css. Se lavori lato server, il controllo lo fai prima ed eventualmente puoi applicare delle classi o degli stili ai relativi td interessati. In alternativa potrai usare javascript a posteriori per controllare i valori di ogni cella ed applicare al volo gli stili che ti servono, non è difficile ma questa parte esula dal css per cui dovresti riformulare tale richiesta sul forum pertinente.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Grazie mille sei stato chiarissimo!

    Soprattutto per me era del tutto nuovo quel modo di identificare le colonne dispari e quelle pari! Penso comunque che questo convenga farlo se sono poche le colonne, altrimenti conviene proprio creare due classi una per le colonne pari ed una per quelle dispari, no?

    Per il colore si, l'inserimento dei valori sarà lato server, ora quindi vedo di farlo con php..

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 © 2025 vBulletin Solutions, Inc. All rights reserved.