J'ai besoin de faire un calcul numérique basé sur les propriétés CSS. Cependant, lorsque j'utilise ceci pour obtenir des informations:
$(this).css('marginBottom')
il renvoie la valeur «10px». Y a-t-il une astuce pour obtenir simplement la partie numérique de la valeur, que ce px
soit %
ou em
ou quoi que ce soit?
javascript
jquery
css
parsing
Tim Sheiner
la source
la source
/[^-\d\.]/g
parseInt
ignorera automatiquement les unités.Par exemple:
la source
parseInt
pour tenir compte du cas où vous recevez une valeur non entière - comme dans la réponse de maximelebreton .Avec la méthode replace, votre valeur css est une chaîne et non un nombre.
Cette méthode est plus propre, simple et renvoie un nombre:
la source
%
,em
)Même si marginBottom est défini dans em, la valeur à l'intérieur de parseFloat ci-dessus sera en px, car il s'agit d'une propriété CSS calculée.
la source
la source
px
mais queem
vous les avez, vous devez les convertir.J'utilise un simple plugin jQuery pour renvoyer la valeur numérique de n'importe quelle propriété CSS unique.
Il s'applique
parseFloat
à la valeur renvoyée par lacss
méthode par défaut de jQuery .Définition du plugin:
Usage:
la source
Supposons que vous ayez une propriété margin-bottom définie sur 20px / 20% / 20em. Pour obtenir la valeur sous forme de nombre, il existe deux options:
Option 1:
La fonction parseInt () analyse une chaîne et renvoie un entier. Ne changez pas les 10 trouvés dans la fonction ci-dessus (connue sous le nom de "radix") à moins que vous ne sachiez ce que vous faites.
L'exemple de sortie sera: 20 (si la marge inférieure est définie en px) pour% et em il affichera le nombre relatif basé sur la taille de l'élément parent / police actuelle.
Option 2 (personnellement, je préfère cette option)
L'exemple de sortie sera: 20 (si la marge inférieure est définie en px) pour% et em il affichera le nombre relatif basé sur la taille de l'élément parent / police actuelle.
La fonction parseFloat () analyse une chaîne et renvoie un nombre à virgule flottante.
La fonction parseFloat () détermine si le premier caractère de la chaîne spécifiée est un nombre. Si tel est le cas, il analyse la chaîne jusqu'à ce qu'elle atteigne la fin du nombre et renvoie le nombre sous forme de nombre et non sous forme de chaîne.
L'avantage de l'option 2 est que si vous obtenez des nombres décimaux retournés (par exemple 20,32322px), vous obtiendrez le nombre retourné avec les valeurs derrière la virgule décimale. Utile si vous avez besoin de renvoyer des nombres spécifiques, par exemple si votre marge inférieure est définie sur em ou %
la source
parseint
tronquera toutes les valeurs décimales (par exemple1.5em
donne1
).Essayez une
replace
fonction avec regex par exemplela source
Id aller pour:
la source
margin
c'est négatif ou positif!Le moyen le plus simple d'obtenir la largeur de l'élément sans unités est:
Source: https://api.jquery.com/width/#width2
la source
Vous pouvez implémenter ce plugin jQuery très simple :
Définition du plugin:
Il est résistant aux
NaN
valeurs qui peuvent se produire dans l'ancienne version d'IE (retournera à la0
place)Usage:
Prendre plaisir! :)
la source
var result; return isNaN(result = parseFloat(this.css(p))) ? 0 : result;
Pour améliorer la réponse acceptée, utilisez ceci:
la source
Si c'est juste pour "px", vous pouvez également utiliser:
la source
Devrait supprimer des unités tout en préservant les décimales.
la source
utilisation
qui renvoient un tableau. le premier index renvoie la valeur de la marge inférieure (exemple 20 pour 20px) et le second index renvoie l'unité de la marge inférieure (exemple px pour 20px)
la source