2011-12-28 10 views
7

Utilizzando Drupal, il tema ha un colore di sfondo assegnato all'elemento <HTML>. Sto creando un CSS print separato per UNA pagina particolare e desidero rimuovere SOLO il colore di sfondo per questa pagina quando l'utente stampa la pagina. L'elemento <HTML> non ha classe o id, ma l'elemento <BODY> lo fa.Come indirizzare l'elemento HTML da una classe specifica di un elemento BODY

<HTML style="background-color:#666"> 
    <BODY class=specialPage> 
    </body> 
</html> 

C'è un modo per specificare che io voglio l'elemento principale di <BODY>? O un modo di targeting <HTML> basato sulla classe di <BODY>?

EDIT:

|------------------------| 
|   <HTML>   | 
|  |----------|  | 
|  |   |  | 
|  | <BODY> |  | 
|  |   |  | 
|  |----------|  | 
|      | 
|------------------------|  

risposta

4

In jQuery è possibile effettuare le seguenti operazioni:

$('body.specialPage').parent('html').css({'background-color': 'white'}); 

Ciò funzionerà se un altro elemento contiene body o meno.

Ecco uno working jsFiddle.

Inoltre, è necessario utilizzare lettere minuscole per i propri elementi html, html anziché HTML.

+0

Non c'è bisogno di usare la sintassi mappa per 'css()' sinice si sta solo cambiando un proprietà. – Purag

+0

Tendo ad usare quella sintassi semplicemente perché potrei aggiungere più proprietà in un secondo momento, e quindi tende a rendere il mio codice più manutenibile. Solo preferenze personali. –

+0

Questo è probabilmente il modo in cui dovrà funzionare. – Mechaflash

3
$("body.specialPage") 
    .closest("html") 
    .css("background-color",""); 

La prima linea si rivolge l'elemento del corpo con la classe speciale. Quindi selezioniamo il suo tag HTML padre e "rimuoviamo" il suo colore di sfondo. Il bello è che non selezionerà l'HTML genitore se la classe non è specificatamente impostata su quella che stai cercando.

Questo sarebbe anche il lavoro:

if($("body").hasClass("specialPage")){ 
    $("html").css("background-color",""); 
} 

di jQuery hasClass() ritorna un valore booleano (true se ha la classe e false se non lo fa), così è il tag body ha la classe che stai cercando , eseguirà il codice nella funzione if, che di nuovo "rimuove" il colore di sfondo dal tag HTML.

3

Si potrebbe provare ignorando lo stile background-color dal tag HTML con il modificatore importante! ..

<HTML style="background-color:#666"> 
    <BODY class=specialPage style="background-color:#123 !important"> 
    </body> 
</html> 
+0

Questo è probabilmente il metodo preferito in quanto lo stile non dovrebbe realmente accadere in JavaScript. +1 –

+0

Creata una modifica nella mia domanda. Questo funzionerebbe tranne il resto dello stile predefinito. – Mechaflash

Problemi correlati