Analyse CSS en JavaScript : un guide détaillé
L'analyse CSS en JavaScript peut être une technique utile pour extraire et manipuler des styles à partir du code CSS. Cependant, cela peut être une tâche complexe à mettre en œuvre.
Utilisation des bibliothèques JavaScript et jQuery
Il existe des bibliothèques JavaScript et jQuery dédiées disponibles pour l'analyse CSS. Une bibliothèque populaire est [jQuery CSS](https://learn.jquery.com/using-jquery-core/other-topics/advanced-selectors/#css-manipulation), qui fournit des méthodes pour extraire et modifier les styles CSS.
Approches alternatives
Si vous souhaitez implémenter votre propre fonctionnalité d'analyse CSS, vous pouvez utiliser un méthode alternative pour diviser les paires propriété-valeur. Par exemple, vous pouvez utiliser des expressions régulières pour capturer des correspondances basées sur un modèle spécifique. De plus, vous pouvez envisager d'utiliser un générateur d'analyseur tel que [PEG.js](https://pegjs.org/) ou [JISON](https://zaach.github.io/jison/) pour générer automatiquement un analyseur basé sur sur une définition grammaticale.
Éviter le fractionnement en points-virgules
Pour éviter de diviser les paires propriété-valeur en des points-virgules dans les valeurs, vous pouvez utiliser une expression régulière qui ignore les correspondances qui incluent un point-virgule après un deux-points. Par exemple :
/(?:[^;|)]*:.*?;)|(?:[^;|)]*?;)|(?:[;|]{1})/g
Cette expression régulière fait correspondre les paires propriété-valeur en capturant des caractères autres que des points-virgules suivis de deux points, ou de points-virgules solo, ou de points-virgules individuels.
Exemple de mise en œuvre
Voici une implémentation améliorée de votre code d'analyse CSS en utilisant l'alternative susmentionnée approche :
parseCSS: function(css) { var rules = {}; css = this.removeComments(css); var blocks = css.split('}'); blocks.pop(); var len = blocks.length; for (var i = 0; i < len; i++) { var pair = blocks[i].split('{'); rules[$.trim(pair[0])] = this.parseCSSBlock(pair[1]); } return rules; }, parseCSSBlock: function(css) { var rule = {}; var declarations = css.match(/(?:[^;|)]*:.*?;)|(?:[^;|)]*?;)|(?:[;|]{1})/g); declarations.pop(); var len = declarations.length; for (var i = 0; i < len; i++) { var loc = declarations[i].indexOf(':'); var property = $.trim(declarations[i].substring(0, loc)); var value = $.trim(declarations[i].substring(loc + 1)); if (property != "" && value != "") rule[property] = value; } return rule; }, removeComments: function(css) { return css.replace(/\/\*(\r|\n|.)*\*\//g,""); }
Utilisation du CSSOM du navigateur
Vous pouvez également tirer parti du modèle d'objet CSS (CSSOM) intégré au navigateur pour analyser le CSS. Voici un exemple :
var rulesForCssText = function (styleContent) { var doc = document.implementation.createHTMLDocument(""), styleElement = document.createElement("style"); styleElement.textContent = styleContent; doc.body.appendChild(styleElement); return styleElement.sheet.cssRules; };
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!