2012-11-23 11 views
6

Eventuali duplicati:
Changing a CSS rule-set from Javascriptmodificare un oggetto regola CSS con javascript

Mi chiedevo se c'è qualche possibilità di modificare fogli di stile Css dichiarazioni senza passare per la linea styling.

Ecco un rapido esempio:

<style> 
    .box {color:green;} 
    .box:hover {color:blue;} 
</style> 

<div class="box">TEXT</div> 

che dà un riquadro blu scritto che diventa verde scritta al passaggio del mouse.

Se mi danno uno stile in linea per il colore, sarà perso il comportamento hover:

<div class="box" style="color:red;">TEXT</box> 

che dà un contenitore di scritta rossa, non importa quale.

Quindi la mia domanda è, come si può accedere e modificare l'oggetto dichiarazione CSS piuttosto che sovrascrivere gli stili con quelli in linea.

Grazie,

risposta

14

È possibile utilizzare il cssRules sull'oggetto DOM foglio di stile che corrisponde al vostro foglio di stile originale per modificare la regola.

var sheet = document.styleSheets[0]; 
var rules = sheet.cssRules || sheet.rules; 

rules[0].style.color = 'red'; 

Nota che IE utilizza rules invece di cssRules.

Ecco una dimostrazione: http://jsfiddle.net/8Mnsf/1/

+0

Precisamente quello che stavo cercando. Grazie per il suggerimento. – jonBreizh

+0

Questo è buono. Mi chiedo se posso indirizzare set di regole specifiche senza fare riferimento alla posizione dell'indice. – Musixauce3000

+0

@ Musixauce3000 Cosa * si * si desidera utilizzare come target per le serie di regole? –

4

Basta definire le vostre classi e assegnare/rimuovere le classi agli elementi HTML con Javascript.

Assegnare direttamente uno stile a un elemento, ha la priorità più alta, sostituirà tutte le altre regole CSS.

EDIT:

si consiglia di utilizzare cssText proprietà

vedi esempio qui cssText property

+0

Per questo avrei bisogno di sapere che cosa lo stile di modifica sarà simile in anticipo. Cosa succede se lo stile di base è basato sull'input dell'utente? Per la tua soluzione, avrei bisogno di creare una nuova classe CSS al volo, che è solo un modo diverso di vedere il problema del foglio di stile – jonBreizh

+0

Ho aggiornato la risposta un po ', controlla la proprietà cssText –

+0

Grazie ma ancora basata su javascript/inline modifica dello stile: veloce lettura errata csstext fa parte della soluzione di fogli di stile di editing – jonBreizh