Ich muss eine numerische Berechnung basierend auf CSS-Eigenschaften durchführen. Wenn ich dies jedoch verwende, um Informationen zu erhalten:
$(this).css('marginBottom')
es gibt den Wert '10px' zurück. Gibt es einen Trick, um nur den Zahlenteil des Wertes zu erhalten, egal ob es ist px
oder %
oder em
oder was auch immer?
javascript
jquery
css
parsing
Tim Sheiner
quelle
quelle
/[^-\d\.]/g
parseInt
ignoriert automatisch die Einheiten.Beispielsweise:
quelle
parseInt
den Fall zu berücksichtigen, in dem Sie einen nicht ganzzahligen Wert erhalten - wie in der Antwort von maximelebreton .Bei der Ersetzungsmethode ist Ihr CSS-Wert eine Zeichenfolge und keine Zahl.
Diese Methode ist sauberer, einfacher und gibt eine Zahl zurück:
quelle
%
,em
) fragtSelbst wenn marginBottom in em definiert ist, wird der Wert in parseFloat oben in px angegeben, da es sich um eine berechnete CSS-Eigenschaft handelt.
quelle
quelle
px
aber angegeben werdenem
, müssen Sie konvertieren.Ich verwende ein einfaches jQuery-Plugin, um den numerischen Wert einer einzelnen CSS-Eigenschaft zurückzugeben.
Dies gilt
parseFloat
für den Wert, der von der Standardmethode von jQuery zurückgegebencss
wird.Plugin Definition:
Verwendung:
quelle
Nehmen wir an, Sie haben eine Margin-Bottom-Eigenschaft, die auf 20px / 20% / 20em festgelegt ist. Um den Wert als Zahl zu erhalten, gibt es zwei Möglichkeiten:
Option 1:
Die Funktion parseInt () analysiert eine Zeichenfolge und gibt eine Ganzzahl zurück. Ändern Sie die 10 in der obigen Funktion (als "Radix" bezeichnet) nur, wenn Sie wissen, was Sie tun.
Beispiel Die Ausgabe lautet: 20 (wenn der untere Rand in px festgelegt ist) für% und em gibt die relative Anzahl basierend auf der aktuellen Größe des übergeordneten Elements / der übergeordneten Schriftart aus.
Option 2 (Ich persönlich bevorzuge diese Option)
Beispiel Die Ausgabe lautet: 20 (wenn der untere Rand in px festgelegt ist) für% und em gibt die relative Anzahl basierend auf der aktuellen Größe des übergeordneten Elements / der übergeordneten Schriftart aus.
Die Funktion parseFloat () analysiert eine Zeichenfolge und gibt eine Gleitkommazahl zurück.
Die Funktion parseFloat () bestimmt, ob das erste Zeichen in der angegebenen Zeichenfolge eine Zahl ist. Wenn dies der Fall ist, wird die Zeichenfolge analysiert, bis das Ende der Zahl erreicht ist, und die Zahl wird als Zahl und nicht als Zeichenfolge zurückgegeben.
Der Vorteil von Option 2 besteht darin, dass bei Rückgabe von Dezimalzahlen (z. B. 20.32322px) die Zahl mit den Werten hinter dem Dezimalpunkt zurückgegeben wird. Nützlich, wenn Sie bestimmte Zahlen zurückgeben müssen, z. B. wenn Ihr Rand unten in em oder % festgelegt ist
quelle
parseint
schneidet alle Dezimalwerte ab (zB1.5em
gibt1
).Versuchen Sie eine
replace
Funktion mit Regex, zquelle
Ich würde gehen für:
quelle
margin
negativ oder positiv ist!Der einfachste Weg, um die Elementbreite ohne Einheiten zu erhalten, ist:
Quelle: https://api.jquery.com/width/#width2
quelle
Sie können dieses sehr einfache jQuery- Plugin implementieren :
Plugin Definition:
Es ist resistent gegen
NaN
Werte, die in der alten IE-Version auftreten können (wird0
stattdessen zurückgegeben)Verwendung:
Genießen! :) :)
quelle
var result; return isNaN(result = parseFloat(this.css(p))) ? 0 : result;
Verwenden Sie Folgendes, um die akzeptierte Antwort zu verbessern:
quelle
Wenn es nur für "px" ist, können Sie auch verwenden:
quelle
Sollte Einheiten unter Beibehaltung der Dezimalstellen entfernen.
quelle
verwenden
die ein Array zurückgeben. Der erste Index gibt den Wert des unteren Randes zurück (Beispiel 20 für 20 Pixel) und der zweite Index gibt die Einheit des unteren Randes zurück (Beispiel px für 20 Pixel).
quelle