Visualizzazione risultati 1 fino 18 di 18

Discussione: [CSS] Differenza tra classe e id

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito [CSS] Differenza tra classe e id

    Buongiorno,
    ho questa domanda in mente e cercando su google ho trovato:

    Le classi servono per definire una tipologia di elementi, cioè per attribuire uno scopo e/o una presentazione ad un sottoinsieme di elementi con caratteristiche e funzionalità comuni di una pagina HTML. Gli id servono per definire un elemento unico in una pagina, con un unico e preciso scopo, nella maggior parte dei casi tale scopo è determinare una sezione in una pagina HTML. In sostanza, quando sappiamo che un elemento sarà unico useremo un id. Negli altri casi, se non disponiamo di alternative (come ad esempio il selettore discendente) possiamo usare una classe.
    Ma in parole povere che significa?
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    L'avatar di dreadnaut
    dreadnaut è connesso ora Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    Le classi servono per definire una tipologia di elementi, cioè per attribuire uno scopo e/o una presentazione ad un sottoinsieme di elementi con caratteristiche e funzionalità comuni di una pagina HTML. Gli id servono per definire un elemento unico in una pagina, con un unico e preciso scopo, nella maggior parte dei casi tale scopo è determinare una sezione in una pagina HTML. In sostanza, quando sappiamo che un elemento sarà unico useremo un id. Negli altri casi, se non disponiamo di alternative (come ad esempio il selettore discendente) possiamo usare una classe.
    più povere di così, e torniamo all'asilo.

    id > identificatore unico > un elemento solo
    class > identifica una classe > più elementi ne possono fare parte

    Quando hai un elemento unico usi l'id (e.g. titolo, footer), quando hai più elementi in una sola pagina usi una classe (e.g. data, sottolineato).

  3. #3
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Grazie dreadnaut.
    Apprezzi l'aiuto? Offrimi un caffè!

  4. #4
    Guest

    Predefinito

    Grazie...serviva pure a me! ;)
    Per cui potremmo anche dire che nell'id possiamo mettere le posizioni (width, height) e nelle classi lo "style" (color, background)...no?
    Ciao! ^_________^

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da sIM Visualizza messaggio
    Grazie...serviva pure a me! ;)
    Per cui potremmo anche dire che nell'id possiamo mettere le posizioni (width, height) e nelle classi lo "style" (color, background)...no?
    Ciao! ^_________^
    No che c'entra puoi farlo in entrambi, l'id serve ad identificare un elemento, le classi possono avere più elementi.

    Foglio stile

    Codice HTML:
    #head{
    
    }
    
    .sottotitolo{
    
    }
    Pagina HTML

    Codice HTML:
    <div id="head">
    </div>
    <div class="sottotitolo"></div>
    <span class="sottotitolo"></span>

    Ciauu
    Ultima modifica di svacant : 20-12-2008 alle ore 14.45.40

  6. #6
    L'avatar di dreadnaut
    dreadnaut è connesso ora Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    in entrambi puoi mettere quello che preferisci, non v'è un contenuto suggerito. L'unica regola è quella specificata sopra, basata sul numero di occorrenze dell'oggetto nella pagina.

  7. #7
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Scusate mi sta venendo un altro piccolo dubbio, ma se io ho questo codice:

    Codice PHP:
    #contenitore{

    margin:0 auto;
    backgroud-color:#FF0000;
    width: 25%:
    /* ECC */
    }
    E' uguale a:
    Codice PHP:
    .contenitore{

    margin:0 auto;
    backgroud-color:#FF0000;
    width: 25%:
    /* ECC */
    }
    Cioè a parte che uno viene richiamato tramite id= e l'altro tramite class= l'effetto che dovrebbe produrre cambia?
    Apprezzi l'aiuto? Offrimi un caffè!

  8. #8
    Guest

    Predefinito

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    Scusate mi sta venendo un altro piccolo dubbio, ma se io ho questo codice:

    Codice PHP:
    #contenitore{

    margin:0 auto;
    backgroud-color:#FF0000;
    width: 25%:
    /* ECC */
    }
    E' uguale a:
    Codice PHP:
    .contenitore{

    margin:0 auto;
    backgroud-color:#FF0000;
    width: 25%:
    /* ECC */
    }
    Cioè a parte che uno viene richiamato tramite id= e l'altro tramite class= l'effetto che dovrebbe produrre cambia?
    id uguale al tuo contenitore.
    class uguale a tutto il resto
    Comunque il tuo foglio di style è OK .
    Mentre il tuo XHTML contiene 8 errori (se ti può essere utile rivedi).
    dietenat

  9. #9
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Citazione Originalmente inviato da dietenat Visualizza messaggio
    id uguale al tuo contenitore.
    class uguale a tutto il resto
    Comunque il tuo foglio di style è OK .
    Mentre il tuo XHTML contiene 8 errori (se ti può essere utile rivedi).
    dietenat
    Mi dispiace ma non è quello che ho chiesto.

    Ciò che volevo dire e che se quel codice viene richiamato tramite classe o tramite id riproduce lo stesso effetto o no?

    Cioè io avevo scaricato un template fatto con id= poi ho sostituito tutto (quindi nel css al posto dei # ho messo il .) con class= ma il risultato era differente, quindi chiedevo se class e id dovrebbero avere lo stesso effetto.
    Apprezzi l'aiuto? Offrimi un caffè!

  10. #10
    Guest

    Predefinito

    Sì, è come hai detto: se dichiari lo stile per un id devi usare #nomeidentificatore, se invece dichiari la classe devi usare .nomeclasse


    ciao!

  11. #11
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Ok ma la domanda (che forse non sono riuscito ancora ad esprimere bene) è: questi due codici hanno lo stesso "effetto" o la visualizzazione compare diversa?

    Codice PHP:
    #cont{
    margin:0 auto;
    }
    ////////////////////////////
    <div id="cont">TESTO + CONTENUTO DI ALTRI DIV</div>
    Codice PHP:
    .cont{
    margin:0 auto;
    }
    ////////////////////////////
    <div class="cont">TESTO + CONTENUTO DI ALTRI DIV</div>
    Cioè come ho già detto una volta ho scaricato un template fatto con gli ID poi ho cambiato gli ID in CLASS (e nel css i cancelletto # con i punti .) e la visualizzazione appariva completamente diversa.
    Ultima modifica di miki92 : 21-12-2008 alle ore 11.21.50
    Apprezzi l'aiuto? Offrimi un caffè!

  12. #12
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Teoricamente non dovrebbero esserci differenze, come ti è già stato detto. Ma se l'hai provato...

    Posso azzardare un'altra conclusione, che nessuno ha citato: cambiando gli ID in CLASS diventa impossibile utilizzare la funzione JavaScript getElementById('...'). Va invece utilizzato getElementsByClassName('...')[0]: probabilmente il tuo template usava queste funzioni per modificare dinamicamente gli stili, per quello appare "diverso"...

    Stammi bene...
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  13. #13
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Citazione Originalmente inviato da dementialsite Visualizza messaggio
    Teoricamente non dovrebbero esserci differenze, come ti è già stato detto. Ma se l'hai provato...

    Posso azzardare un'altra conclusione, che nessuno ha citato: cambiando gli ID in CLASS diventa impossibile utilizzare la funzione JavaScript getElementById('...'). Va invece utilizzato getElementsByClassName('...')[0]: probabilmente il tuo template usava queste funzioni per modificare dinamicamente gli stili, per quello appare "diverso"...

    Stammi bene...
    Nono era tutto gestibile tramite CSS/HTML non c'era traccia di JavaScript. Va beh sarà stato un errore del browser in quel momento o chissà che altro...grazie comunque.
    Apprezzi l'aiuto? Offrimi un caffè!

  14. #14
    L'avatar di dreadnaut
    dreadnaut è connesso ora Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    se il codice è soltanto quello, l'effetto è identico.

    Quando però ci sono più regole che vanno a cambiare gli stessi attributi, usare #qualcosa o .qualcosa cambia e dipende dal valore di specificità.

    La specificità è un rigiro strano per cui alcune regole hanno diversa priorità e sovrascrivono, o non sovrascrivono, altre regole che vanno a coprire lo stesso oggetto.

    Esempio
    Codice:
    P { color: red; }
    .verde { color: green; }
    di che colore apparirà il testo in
    Codice HTML:
    <p class="verde"> Testo test! </p>
    Seguendo le regole della pagina che ho linkato sopra, si scopre che il testo appare effettivamente verde, perché una regola TAG { ... } vale 1 punto, mentre una regola .nomeclasse { ... } vale 10 punti, e quindi ha la precedenza. Se ci fosse un #id { ... }, questa regola varrebbe addirittura 100 punti e i valori in essa definiti sarebberò quelli utilizzati.

  15. #15
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Wow, io senza vedere la continua avevo detto "rosso"...wow quante cose si imparano sul forum...ti ringrazio dreadnaut!
    Apprezzi l'aiuto? Offrimi un caffè!

  16. #16
    L'avatar di dreadnaut
    dreadnaut è connesso ora Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,269

    Predefinito

    ah, a parità di specificità, l'ultima regola nel file è quella che viene applicata (immagina che tutte le regole vengano applicate una dopo l'altra, in cascata: l'ultima a scrivere un valore per quell'attributo vince)

  17. #17
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,226

    Predefinito

    Sisi ho letto su quel link da te postato, però la cosa che non capisco e perchè alcuni template o stili CSS hanno una cosa del genere:

    Codice PHP:
    #contenitore{

    margin:0 auto;
    backgroud-color:#FF0000;
    width: 25%:
    /* ECC */
    }

    .
    contenitore{

    margin:0 auto;
    backgroud-color:#FF0000;
    width: 25%:
    /* ECC */
    }
    Cioè lo stessisimo codice prima in classe e poi in id (o viceversa) per applicare quella regola su un solo div
    Apprezzi l'aiuto? Offrimi un caffè!

  18. #18
    zulukwebsite non è connesso Utente attivo
    Data registrazione
    16-07-2006
    Messaggi
    290

    Predefinito

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    Sisi ho letto su quel link da te postato, però la cosa che non capisco e perchè alcuni template o stili CSS hanno una cosa del genere:

    Codice PHP:
    #contenitore{

    margin:0 auto;
    backgroud-color:#FF0000;
    width: 25%:
    /* ECC */
    }

    .
    contenitore{

    margin:0 auto;
    backgroud-color:#FF0000;
    width: 25%:
    /* ECC */
    }
    Cioè lo stessisimo codice prima in classe e poi in id (o viceversa) per applicare quella regola su un solo div
    be ..in teoria dovrebbe essere sbagliato (ma più che sbagliato diciamo nn appropriato) applicare la class all'elemento div contenitore....visto che dovrà (credo) essere applicato una sola volta nella pagina la cosa corretta sarebbe applicare un id all'elemento div...sinceramente non so perchè trovi quello stile ripetuto..... ma tanto se nn è mai usato puoi cancellarlo no?? poi per il resto pensa che è più un discorso teorico che pratico...cioè tu un mestolo lo puoi usare anche per picchiare la gente ma in teoria serve per girare il sugo ;-)
    Ultima modifica di zulukwebsite : 22-12-2008 alle ore 14.12.08

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •