2012-06-22 6 views
46

Se si hannoÈ possibile eseguire l'override in linea! Importante?

<div style="display: none !important;"></div> 

C'è un modo per ignorare che nel foglio di stile per renderlo visualizzata?

preferibilmente utilizzando qualcosa di simile a questo:

div { display: block !important; } 
+2

Per ignorare 'display: block! Important',' visibility: hidden; 'funzionerà. Ad ogni modo, non correlato alla domanda. Ma pensato per condividere. – SkyBuzz

risposta

65

Permettetemi di cominciare dicendo che stili generalmente in linea possono essere sovrascritte:

.override {color:red !important;}​

<p style="color:blue;">I will be blue</p> 
<p style="color:blue;" class="override">But I will be red</p> 

Fiddled

Questo comportamento è descritto in W3 specs, in cui si afferma che !important le dichiarazioni non alterano la specificità, ma piuttosto ha la precedenza su su dichiarazioni "normali".

Detto questo, quando le regole contrastanti entrambi hanno la bandiera !important, specificità impone che viene applicata una regola in linea - il che significa che per lo scenario di OP, non c'è modo per ignorare un linea!important.

+3

L'OP indica chiaramente 'inline! Important' - si prega di leggere correttamente! Tuttavia +1 per una buona risposta. – Christoph

+1

@Christoph: ma le risposte indicano altrettanto chiaramente "non è possibile ignorare CSS in linea", "in linea ha precedenza più alta" ... Questo è sbagliato, quindi il fraseggio originale della mia risposta.Non mi aspetto che tutti modifichino le loro risposte per correggere l'errore –

+2

La tua risposta non dice nulla sull'overriding degli stili in linea '! Important'. La domanda chiede di ignorare solo gli stili in linea '! Important'. – BoltClock

19

Non è possibile sostituire CSS in linea se ha !important. Ha una precedenza più alta rispetto allo stile nel tuo file CSS esterno.

Tuttavia, se si desidera modificare alcune azioni in un secondo momento, è possibile utilizzare un po 'di JavaScript.

+1

Non è possibile utilizzare javascript, è per le e-mail. –

5

Non è possibile ignorare lo stile in linea con !important. La prima preferenza è lo stile in linea.

Per esempio: abbiamo una classe

.styleT{float:left;padding-left:4px;width:90px;} 

e in jsp

<div class="styleT" id="inputT" style="padding-left:0px;"> 

qui non prende il padding-left:4px; .E prende classe styleT tranne il padding-left: 4px ;. Ci sarà padding-left:0px;.

5

Non è possibile sovrascrivere CSS in linea con !important, perché ha precedenza più elevata, ma, utilizzando JavaScript, è possibile ottenere ciò che si desidera.

+0

grazie per la modifica, ora è corretto –

1

Ecco una semplice soluzione jQuery.

$(document).ready(function() { 
$('div').css('display','block'); 
})