Come posso annullare la proprietà CSS?


109

Fondamentalmente ho due css esterni nella mia pagina.

Il primo Main.csscontiene tutte le regole di stile ma non ho accesso ad esso e quindi non posso modificarlo. Ho accesso a un secondo file Template.css, quindi devo sovrascrivere Main.cssi valori di in template.css.

Questo è facile per cui devo modificare il valore, ma come faccio a rimuovere completamente una proprietà?

Come dire che una classe .c1ha height: 40px;, come faccio a sbarazzarsi di questa proprietà altezza?


Risposte:


175

Devi ripristinare ogni singola proprietà al suo valore predefinito. Non è eccezionale, ma è l'unico modo, date le informazioni che ci hai fornito.

Nel tuo esempio, faresti:

.c1 {
    height: auto;
}

Dovresti cercare ogni proprietà qui:

https://developer.mozilla.org/en-US/docs/Web/CSS/Reference

Ad esempioheight :

Valore iniziale : auto

Un altro esempiomax-height :

Valore iniziale : none


Nel 2017 c'è ora un altro modo, la unsetparola chiave:

.c1 {
    height: unset;
}

Un po 'di documentazione: https://developer.mozilla.org/en-US/docs/Web/CSS/unset

La parola chiave CSS non impostata è la combinazione delle parole chiave iniziali ed ereditate. Come queste altre due parole chiave a livello di CSS, può essere applicato a qualsiasi proprietà CSS, inclusa l'abbreviazione CSS all. Questa parola chiave reimposta la proprietà al suo valore ereditato se eredita dal suo genitore o al suo valore iniziale in caso contrario. In altre parole, si comporta come la parola chiave inherit nel primo caso e come la parola chiave iniziale nel secondo caso.

Il supporto del browser è buono: http://caniuse.com/css-unset-value


3
+1 per la bella risposta e riferimento. Penso che il collegamento sia cambiato in: developer.mozilla.org/en-US/docs/Web/CSS/Reference
Paolo

L'impostazione del valore su auto non sembra funzionare quando non c'è un valore iniziale ("valore iniziale: nessuno"). Ad esempio, quando si esegue "max-width: auto;" Ricevo un errore di valore della proprietà non corrispondente. Cosa dovrei fare?
user1779563

3
@ user1779563 L'hai impostato su "none".
AndreKR

1
Vorrei ringraziare @simhumileco per la sua risposta che ho spudoratamente rubato poiché la mia risposta è stata accettata e le persone potrebbero non scorrere verso il basso.
trenta punti

10
.c1 {
    height: unset;
}

Il unsetvalore aggiunto in CSS3 risolve anche questo problema ed è un metodo ancora più universale di autooinitial perché imposta a ogni proprietà CSS il suo valore predefinito e inoltre il suo comportamento predefinito rispetto al suo genitore.

Notare che il initialvalore interrompe il comportamento di cui sopra.

Da MDN :

Come queste altre due parole chiave a livello di CSS, può essere applicato a qualsiasi proprietà CSS, inclusa l'abbreviazione CSS all . Questa parola chiave reimposta la proprietà al suo valore ereditato se eredita dal suo genitore o al suo valore iniziale in caso contrario.


9

come dire che una classe .c1 ha altezza: 40px; come mi sbarazzo di questa proprietà di altezza?

Purtroppo, non puoi. CSS non ha un segnaposto "predefinito".

In tal caso, ripristineresti la proprietà utilizzando

 height: auto;

come sottolinea correttamente @Ben, in alcuni casi, inheritè il modo corretto di procedere, ad esempio quando si reimposta il colore del testo di un aelemento (quella proprietà è ereditata dall'elemento genitore):

a { color: inherit }

3
Darò +1 a quello. C'è anche il valore "inherit". In alcuni contesti diversi dall'altezza, ereditare è più appropriato.
Ben

1
@meo hai ragione. (Domanda correlata) ciò sembra significare che ci sono proprietà che non possono essere ripristinate ai valori predefiniti in IE ... che peccato
Pekka

7

È initialstata aggiunta una parola chiave in CSS3 per consentire agli autori di specificare esplicitamente questo valore iniziale.


FYI: height:initial;non sembra funzionare in IE9.
Kris Hollenbeck

quindi qual è la differenza tra initiale autoe unset?.
ExillustX

2

Per eliminare la proprietà di altezza fissa, puoi impostarla sul valore predefinito:

height: auto;

2

È necessario fornire un selettore con una specificità maggiore rispetto a quello in Main.css. Con quel selettore, imposta i valori delle proprietà che desideri ai valori predefiniti, ad es

body .c1 {
    height: auto;
}

Non esiste un valore "predefinito" che funzioni per tutte le proprietà, è necessario cercare qual è il valore predefinito per ciascuna e utilizzarlo.


1

Ho avuto un problema che, anche quando ho sovrascritto "height" in "unset" o "initial", si comportava in modo diverso da quando ho rimosso l'impostazione precedente.

Si è scoperto che dovevo rimuovere anche la proprietà altezza minima!

height: unset;
min-height: none

Modifica: ho provato su IE 7 e non riconosce "unset", quindi "auto" funziona meglio ".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.