jQuery devient variabile texte-ombre

Je souhaite obtenir 4 variables lorsque je clique sur une étendue possédant la propriété CSS3 text-shadow. Donc, pour une propriété css de text-shadow: -4px 11px 8px rgb(30, 43, 2); , mon code devrait être:

 $("#element").click(function () { var text-shadow = $("#element").css("text-shadow") }); 

Serait-il possible de le diviser comme suit:

 var y = "-4px"; var x = "11px"; var blur = "8px"; color = "rgb(30, 43, 2)"; 

Je dois en quelque sorte diviser la première variable pour obtenir ces données.

Merci

Vous devez utiliser une expression régulière pour fractionner le résultat de jQuery css en variables que vous recherchez.

 var result = $('#element').css('text-shadow').match(/(-?\d+px)|(rgb\(.+\))/g) // result => ['rgb(30, 43, 2)', '-4px', '11px', '8px'] var color = result[0], y = result[1], x = result[2], blur = result[3]; 

Cela retournera un tableau divisant la valeur de chaîne text-shadow en nombres avec des valeurs de pixels et de valeurs rgb. Cela peut vous aider dans ce cas particulier, mais vous aurez probablement besoin de travailler dessus pour le faire fonctionner pour tous les cas possibles d’ text-shadow de text-shadow

REMARQUE: La valeur rgb(...) est la première correspondance du tableau car c’est la façon dont Firefox, Chrome, Safari et Opera le renvoie, quelle que soit la manière dont vous l’avez affectée. IE pourrait le faire différemment.

Manière évidente serait:

 var properties = $('#element').css('text-shadow').split(" "); var y = properties[0]; var x = properties[1]; var blur = properties[3]; var color = properties[4] + " " + properties[5] + " " + properties[6]; 

Étant donné que je ne pense pas qu’il soit possible d’extraire individuellement chaque valeur du CSS, le moyen le plus simple consiste à manipuler des chaînes. Et puisque la valeur renvoyée est dans cet ordre: color, y, x, flou, vous obtiendrez ce script:

  var p = $('#element').css('text-shadow').split(' '); var color = p[0]+p[1]+p[2]; var y = p[3]; var x = p[4]; var blur = p[5];