Visualizzazione dei risultati da 1 a 3 su 3

Discussione: Precedenza tra .classe Elemento e .classe

  1. #1

    Precedenza tra .classe Elemento e .classe

    Salve a tutti,
    ho una serie di elementi (div) all'interno di un div più grande. Devo assegnare gli stili a solo uno di questi (secondo criteri stabiliti da js che non c'entrano con il mio problema).


    codice HTML:
    <div class='parent'>
          <div>Testo1</div>
          <div>Testo2</div>
          <div>Testo3</div>
    </div>
    Tramite JS assegno la classe a uno dei div interni che mi dovrebbe venire colorato.
    Sempre tramite JS a volte la tolgo e deve tornare del colore di default.

    In CSS ho le seguenti regole:

    codice HTML:
    .parent div{
    color:white;
    background-color:black
    }
    .selectedDiv{
    color:black
    background-color:red;
    font-weight:bold;
    }
    Tuttavia quando uso una regola del tipo .classe ELEMENTO non riesco più ad assegnare stili in cascata.
    Sbaglio qualcosa o il comportamento è normale?
    E in questo caso, come posso ovviare al problema senza definire una classe di default da sostituire a selectedDiv in modo dinamico (ovviamente se ciò è possibile)?

    Grazie a chi mi risponderà.
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    3,687
    Ciao, il comportamento è più che normalmente, tutto dipende dalla "specificità" per la quale si ha più o meno priorità per una regola rispetto ad un'altra. Il calcolo della specificità è determinato da un punteggio basato su dei criteri specifici tra cui la posizione in cui è definita la regola e quello che è il peso stesso del selettore, cioè la complessità dei vari e differenti elementi che compongono il selettore. Online puoi anche trovare degli strumenti proprio per calcolare la specificità delle regole css (trovi qualcosa eventualmente anche tra i link utili). A volte non è così scontato determinare tale priorità/specificità ma nel tuo caso sembra palese che il primo selettore .parent div, essendo formato da due elementi, sia più specifico del secondo .selectedDiv che è formato solo da un elemento.

    In questo caso potrebbe essere sufficiente definere .parent .selectedDiv.

    Sempre che abbia capito cosa intendi per ".classe ELEMENTO".
    Prima di postare considera che tra i link utili puoi trovare il 75% delle risposte alle tue domande; il 15% tra i post del forum; il 9% sul web.
    Ti resta l’1% ... usalo bene!

    Le cattive domande sono quelle che non meritano risposta, le buone domande sono quelle che non hanno risposta
    L'Itailano non e nu'opnioine. E' improntate uslaro correattemtne sul froum. Garize!

  3. #3
    Sì, è chiarissimo.
    Non ci pensavo che un selettore classe "generico" fosse meno specifico (sbagliando il ragionamento, credevo che una regola su OGNI DIV di un elemento fosse più generale di una regola imposta tramite una classe in modo specifico).
    Con la modifica che hai detto tu funziona tutto.
    Grazie, farò più attenzione d'ora in avanti (e mi guarderò un po' di tutorial sulla specificitià!)
    I dilettanti costruirono l'Arca, i professionisti il Titanic!

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