2008-12-24 5 views
0

Est-il possible de déterminer des styles dans un fichier CSS via Javascript?Recherche de propriétés CSS non actives

J'essaie de détecter les propriétés CSS qui seront appliquées à un élément dans un certain état, :hover dans ce cas, mais sans les propriétés actuellement actives sur l'élément. J'avais pensé à cloner l'élément, en ajoutant le clone comme un frère avec display: none et en interrogeant les propriétés de cette façon, mais je ne sais pas comment forcer le style :hover à travers Javascript. Des idées?

Répondre

0

Le style hover est appliqué par le navigateur, en fonction du mouvement de la souris. Je ne pense pas que vous pouvez le forcer à travers JS. Mais pourquoi voudriez-vous? Il suffit de définir une autre classe css et de l'assigner via la propriété className dans JS.

+0

alternativement: a: hover, .myAnchorHoverClass {/ * mon * css /} puis il suffit d'appliquer myAnchorHoverClass par Javascript –

+0

Merci Martijn, thats une bonne suggestion. Je veux garder le: hover pour la dégradation non-JS, et pour certaines transitions WebKit. – roryf

0

Pour déterminer les styles throught JS, vous pouvez le faire en utilisant className comme celui-ci par exemple:

item.onmouseover = gohover;

item.onmouseout = nohover;

fonction gohover() {this.className = gClass;}

...

0

Si je comprends bien votre question, il semble que ce que vous cherchez est un XPath pour CSS (pseudo) classes. En dehors de l'extraction du fichier CSS avec Ajax et de la recherche avec regex, je ne connais aucune méthode pour extraire des informations de style d'un fichier CSS.

+0

Wow. Il semble que j'avais tort! Je pense que [la réponse de Jason Karns] (http://stackoverflow.com/questions/391757/find-non-active-css-properties/517495#517495) serait la plus proche que vous obtiendrez. Pour plus d'informations, consultez la page [Modifier la feuille de style] de QuirksMode (http://www.quirksmode.org/dom/changess.html). ... J'adore apprendre de nouvelles choses! –

3

Je crois que vous êtes intéressé par le tableau styleSheets qui est une propriété des document (document.styleSheets) Cet index de tableau toutes les feuilles de style référencées par la page en cours et vous permet de parcourir plus dans chaque feuille toutes les règles de style . Le tableau W3C (Firefox, Opera, Safari) pour accéder aux règles css est cssRules tandis que le tableau de Microsoft est rules. L'extrait de code suivant est tiré de www.quirksmode.org:

 
var theRules = new Array(); 
if (document.styleSheets[1].cssRules) 
    theRules = document.styleSheets 1 .cssRules 
else if (document.styleSheets[1].rules) 
    theRules = document.styleSheets 1 .rules 

Maintenant theRules contient les règles pour la deuxième feuille de style pour le document. Voir reference et compatibility tables de quirksmode pour plus d'informations sur l'accès aux règles CSS à partir de JavaScript.

Questions connexes