Visualizzazione dei risultati da 1 a 2 su 2

Discussione: Tabella...a modo mio!?

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2013
    residenza
    Bologna
    Messaggi
    1

    Tabella...a modo mio!?

    Ciao ragazzi,

    sono un "pre-principiante" di javascript e sto trovando difficoltà in quanto segue.
    Vorrei fare uno script che cambi il colore di sfondo alle celle della prima riga e della prima colonna di ogni tabella con un determinato ClassName (<table class="tab2">) all'interno della mia pagina html.
    Se riuscite a darmi una mano, sono curioso più che altro di capire l'approccio in questo caso.
    Volevo evitare obrobri tipo <td class="altrocolore"> su tutti i <td> ove ho bisogno, sia perché non volevo inserirli/sostituirli "a mano" ogni volta, sia perché le tabelle possono anche essere belle grosse...

    Fretta 0, curiosità 1000.

    Grazie a tutti!

    Matteo

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,776
    Ciao,
    Per una cosa del genere io utilizzerei un approccio CSS più che scomodare javascript.
    Non è necessario utilizzare una classe per assegnare un css in quel modo, ma esistono altre regole più funzionali.

    Partiamo dal principio che per le tabelle sono disponibili vari tag oltre i classici <table>, <tr> e <td>.
    Ad esempio gli elementi <thead> e <th> identificano una riga di intestazione e dei dati di tipo intestazione, appunto. Farebbero proprio al caso tuo, per cui, oltre ad ottenere una tabella meglio strutturata più intellegibile e soprattutto più accessibile, sarebbe semplice assegnare delle regole css per tali elementi.

    Ad ogni modo, se non vuoi/puoi modificare le tabelle ma vuoi utilizzare i semplici <tr> e <td>, puoi comunque utilizzare delle pseudo-classi css3 per selezionare ad esempio un primo elemento figlio o di un certo tipo, così da assegnare in modo specifico le relative regole css.

    Ti posto un esempio pratico con le due soluzioni:
    codice:
    <!DOCTYPE HTML>
    <html>
      <head>
        <title>Esempio</title>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <style type="text/css">
          table{
            width:300px;
            border-collapse:collapse;
          }
          table, th, td{
            border: 1px solid gray;
          }
          
          /* -- 1° METODO --
            formatto gli elementi thead e th 
          */
          .tab1 thead{
            background:red;
          }
          .tab1 tbody th{
            background:gainsboro;
            width:20px;
          } 
          
          /* -- 2° METODO --
            uso le pseudo-classi per fare una selezione degli elementi interessati
          */
          .tab2 tr:first-child{
            background:green;
            font-weight:bold;
            text-align:center;
          }
          .tab2 tr:not(:first-child)>:first-child{
            background:gainsboro;
            font-weight:bold;
            width:20px;
            text-align:center;
          } 
        </style>
    
      </head>
      <body>
        <table class="tab1">
          <thead>
            <tr>
              <th></th>
              <th>A</th>
              <th>B</th>
              <th>C</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <th>1</th>
              <td></td>
              <td></td>
              <td></td>
            </tr>
            <tr>
              <th>2</th>
              <td></td>
              <td></td>
              <td></td>
            </tr>
            <tr>
              <th>3</th>
              <td></td>
              <td></td>
              <td></td>
            </tr>
          </tbody>
        </table>
        <br>
        <table class="tab2">
          <tr>
            <td></td>
            <td>A</td>
            <td>B</td>
            <td>C</td>
          </tr>
          <tr>
            <td>1</td>
            <td></td>
            <td></td>
            <td></td>
          </tr>
          <tr>
            <td>2</td>
            <td></td>
            <td></td>
            <td></td>
          </tr>
          <tr>
            <td>3</td>
            <td></td>
            <td></td>
            <td></td>
          </tr>
        </table>
      </body>
    </html>
    Nota inoltre che gli elementi <th> assegnano una pre-formattazione al testo contenuto (dovrebbe visualizzarsi centrato e in grassetto).

    Il risultato dovrebbe essere come questo che allego:

    Image1.gif

    Ad ogni modo i miei vogliono essere solo dei consigli, l'argomento sarebbe infatti offtopic dato che hai chiesto una soluzione in javascript.
    Se però vuoi utilizzare javascript, per preferenza o per curiosità, lascio rispondere eventualmente ad altri.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

Tag per questa discussione

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.