2014-06-09 15 views
7

Sono stato contattato per scrivere pagine di destinazione per un sito Web.Bypass CSS "Universal Selector * Reset"

Ecco il problema: lo sviluppatore originale (s) ha aggiunto un "selettore universale * reset" nel file css principale:

* { //Universal Selector '*' Reset 
    margin: 0; 
    padding: 0; 
} 

e poi costruito gli stili del sito intorno ad esso.

Purtroppo, questo sacco è che richiede di codice per aggirare il tabelle, elenchi, intestazioni, ecc ..

La domanda è: C'è un modo per bypassare il selettore per un singolo oggetto (tavolo, elenco, ecc.) o anche per la pagina in generale (oltre a non includere il file css)?

Modifica: Alcune persone sono state confuse dalla mia domanda. Per bypass intendo ignorare il selettore dell'asterisco anziché ignorarlo ... Si noti inoltre che sto cercando di minimizzare il codice aggiuntivo.

Modifica 2: qui è un jsFiddle che illustra il mio problema.
Nota: "padding: initial;" non sembra funzionare.

+2

perché non dovresti semplicemente usare 'table, list {margin: 1em; riempimento 1em;} '? – agconti

+3

hai provato a sovrascriverlo usando qualcosa come '* {margin: initial; imbottitura: iniziale; } '? –

+1

Non fornirebbe semplicemente un selettore più specifico per farlo? 'table {margin: 10px; } '. Il punto, sicuramente, è eliminare le differenze nello stile predefinito tra i browser; perché vorresti tornare a quello stile inconsistente che non ho idea. – IMSoP

risposta

12

Qualsiasi altro selettore è più specifico del selettore * e quindi sovrascriverà gli effetti.
Vedere il seguente sample Jsfiddle.

Così dunque se, per esempio, si desidera ripristinare le imbottiture su un tavolo < > si può semplicemente fare

table { 
    padding: initial; 
} 

Se questo non abbastanza solleticare la vostra fantasia si può invece affinare l'asterisco selettore di ignorare gli elementi della tua scelta:

*:not(table) { 
    [...] 
} 

Appendice:
Come può venire inaspettato per molti, l'impostazione di un pr operty e quindi utilizzando initial su di esso con un selettore più specifico non necessariamente invertirà l'impostazione.
Confronta a reset to initial value (second image below) a an unstyled example (first image below) (a seconda del browser il risultato potrebbe essere diverso):

senza stile:
Unstyled sample

Reset:
Reset sample

Questo perché the initial value (definito nelle specifiche CSS) della proprietà potrebbe differire dal valore predefinito del browser per l'elemento.

+1

Chiederò al responsabile del sito di inserire alcuni "not" sull'asterisco. Grazie –

0

Non è possibile annullare (ignorare) i valori già presenti nella cascata; devi modificare la regola che ha introdotto il valore o sovrascriverlo con un altro valore.

* { 
    margin: initial; 
    padding: initial; 
} 

(Kudos Re Re) ritorna tali proprietà ai loro valori iniziali, ma non riapplicare gli stili predefiniti del browser per questi elementi. (Questi stili sono stati sovrascritti in precedenza e sono "persi"). Ma è previsto. :)

initial è il "primo" valore per una proprietà, prima che vengano applicate le regole. Ogni proprietà ha un valore iniziale definito nelle specifiche CSS.

margin = auto 
padding = 0 

Gli stili "predefiniti" del browser sono molto diversi: sono regole di stile effettive applicate prima dei fogli di stile dell'autore. Sono stati scritti per imitare il modo in cui i browser pre-CSS hanno visualizzato determinati elementi.

ul { padding-left: 40px; list-style: disc; … } 

Questi sono arbitrari - non ci sono "valori predefiniti" CSS per come dovrebbe apparire un elenco. Quindi, se vuoi valori predefiniti per elemento, probabilmente è meglio per write your own.

+0

Grazie per il pensiero, ma questo non ha funzionato (almeno in chrome). Vedi la risposta di Nit per una spiegazione del perché. –

+0

Ah, non avevo capito che volevi "mantenere" le impostazioni predefinite del browser.Ricorda solo che gli stili predefiniti del browser sono arbitrari e sconosciuti, quindi è meglio iniziare semplicemente a scrivere i propri stili specifici degli elementi all'inizio. – sam