Je voudrais renvoyer une chaîne avec tout le contenu d'une règle CSS, comme le format que vous verriez dans un style en ligne. J'aimerais pouvoir le faire sans savoir ce qui est contenu dans une règle particulière, donc je ne peux pas simplement les extraire par nom de style (comme .style.width
etc.)
Le CSS:
.test {
width:80px;
height:50px;
background-color:#808080;
}
Le code jusqu'à présent:
function getStyle(className) {
var classes = document.styleSheets[0].rules || document.styleSheets[0].cssRules
for(var x=0;x<classes.length;x++) {
if(classes[x].selectorText==className) {
//this is where I can collect the style information, but how?
}
}
}
getStyle('.test')
javascript
html
css
Diodeus - James MacFarlane
la source
la source
Réponses:
Adapté d' ici , en s'appuyant sur la réponse de scunliffe:
la source
var classes
devrait êtredocument.styleSheets[0].rules[0].cssRules
dans Chrome. Cela pourrait être ajouté (de manière créative) à la cale dans la réponse.Comme la réponse acceptée de "nsdel" n'est disponible qu'avec une seule feuille de style dans un document, c'est la solution de travail complète adaptée:
Remarque: le sélecteur doit être le même que dans le CSS.
la source
global_
est juste un alias pour l'objet window. J'ai modifié l'extrait de code. Cela devrait fonctionner maintenantSOLUTION 1 (CROSS-BROWSER)
SOLUTION 2 (CROSS-BROWSER)
la source
Quelques différences de navigateur à connaître:
Compte tenu du CSS:
et étant donné l'exemple d'InsDel, les classes auront 2 classes dans FF et 3 classes dans IE7 .
Mon exemple illustre ceci:
la source
Voici le code pour parcourir toutes les règles d'une page:
la source
Remarque: "menu" est un identifiant d'élément auquel vous avez appliqué CSS. "className" un nom de classe css dont nous avons besoin pour obtenir son texte.
la source
item
méthode prend un index entier, pas un nom de classe).Je n'ai trouvé aucune des suggestions qui fonctionne vraiment. En voici un plus robuste qui normalise l'espacement lors de la recherche de classes.
Voici en action depuis la console Chrome.
la source
J'ai créé une fonction d'aide similaire qui montre les styles inutiles pour cette page. ajoute un
<div>
au corps de la liste de tous les styles qui n'ont pas été utilisés.(à utiliser avec la console Firebug)
la source
Avoir adapté la réponse de julmot afin d'obtenir un résultat plus complet. Cette méthode retournera également les styles dans lesquels la classe fait partie du sélecteur.
De plus, j'ai créé une fonction qui collecte les définitions de style css dans le sous-arbre d'un nœud racine que vous fournissez (via un sélecteur jquery).
Notez que si une classe est définie plusieurs fois avec le même sélecteur, la fonction ci-dessus ne reprendra que la première. Notez que l'exemple utilise jQuery (mais cab peut être réécrit relativement facilement pour ne pas l'utiliser)
la source
// fonctionne dans IE, pas sûr des autres navigateurs ...
la source
Cette version parcourra toutes les feuilles de style d'une page. Pour mes besoins, les styles se trouvaient généralement dans la deuxième à la dernière des 20 feuilles de style, je les vérifie donc à l'envers.
la source
J'ai ajouté le retour d'objet où les attributs sont analysés style / valeurs:
la source
style.cssText.match(...).1
est nul ou pas un objetUncaught ReferenceError: classStyleTxt is not defined
J'ai créé une version qui recherche toutes les feuilles de style et renvoie les correspondances sous forme d'objet clé / valeur. Vous pouvez également spécifier startsWith pour faire correspondre les styles enfants.
Retour:
de:
Le code:
J'utilise ceci en production dans le cadre du projet pure forme . J'espère que ça aide.
la source
J'ai fait face au même problème. Et avec l'aide de gars, j'ai trouvé une solution vraiment intelligente qui résout totalement ce problème (fonctionne sur chrome).
Extraire toutes les images du réseau
la source
En une seule ligne, imprime le CSS généré pour toute requête.
la source
Sur la base de la réponse @dude, cela devrait renvoyer des styles pertinents dans un objet, par exemple:
Cela retournera:
Code:
la source
_.pickBy(classes[x].style, (k,v) => isNaN(parseInt(k)) && typeof(v) == 'string' && v && v != 'initial' && k != 'cssText' )