jQuery verfügt über die Funktionen height () und width (), die die Höhe oder Breite in Pixel als Ganzzahl ... zurückgeben.
Wie kann ich mit jQuery einen Füll- oder Randwert eines Elements in Pixel und als Ganzzahl abrufen?
Meine erste Idee war, Folgendes zu tun:
var padding = parseInt(jQuery("myId").css("padding-top"));
Aber wie kann ich den Wert in Pixel erhalten, wenn zum Beispiel in ems eine Auffüllung angegeben ist?
Als ich mir das von Chris Pebble vorgeschlagene JSizes-Plugin ansah, stellte ich fest, dass meine eigene Version die richtige war :). jQuery gibt immer einen Wert in Pixel zurück, daher war es die Lösung, ihn nur auf eine Ganzzahl zu analysieren.
Vielen Dank an Chris Pebble und Ian Robinson
javascript
jquery
css
Malik Amurlayev
quelle
quelle
parseInt
. Zitieren von MDN: " radix Ein int zwischen 2 und 36, das den Radix (die Basis in mathematischen Zahlensystemen) der oben genannten Zeichenfolge darstellt. Geben Sie 10 für das Dezimalzahlensystem an. Geben Sie diesen Parameter immer an, um Verwirrung beim Leser zu vermeiden und ein vorhersagbares Verhalten zu gewährleisten Unterschiedliche Implementierungen führen zu unterschiedlichen Ergebnissen, wenn kein Radix angegeben wird. Der Standardwert ist normalerweise 10. " Siehe: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…Antworten:
Sie sollten in der Lage sein, CSS zu verwenden ( http://docs.jquery.com/CSS/css#name ). Möglicherweise müssen Sie spezifischer sein, z. B. "links auffüllen" oder "oben am Rand".
Beispiel:
CSS
JS
Das Ergebnis ist 10px.
Wenn Sie den ganzzahligen Wert erhalten möchten, können Sie Folgendes tun:
quelle
JSizes
Plugin aus der anderen Antwort (die ich letztendlich verwendet habe) gibt eine Ganzzahl zurück, wenn der Rückgabewert übergeben wirdParseInt(...)
, nur zu Ihrer Information.parseInt($('a').css('margin-top').replace('px', ''))
.css()
der Wert am Ende immer noch mit "px" zurückgegeben?Vergleichen Sie die äußere und innere Höhe / Breite, um den Gesamtrand und die Polsterung zu erhalten:
quelle
that.outerHeight(true) - that.outerHeight()
würde die gesamten vertikalen Ränder angeben, da OuterHeight () Auffüllungen und Ränder enthalten würde, Ränder jedoch ausschließen würde. Siehe api.jquery.com/outerWidth/ .Die parseInt-Funktion verfügt über einen "radix" -Parameter, der das bei der Konvertierung verwendete Zahlensystem definiert. Beim Aufrufen wird
parseInt(jQuery('#something').css('margin-left'), 10);
der linke Rand als Ganzzahl zurückgegeben.Dies ist, was JSizes verwenden.
quelle
parseInt('auto', 10);
(auto
ist gültigmargin-left
).BITTE laden Sie keine andere Bibliothek, nur um etwas zu tun, das bereits nativ verfügbar ist!
jQuery's
.css()
konvertiert zunächst% und em in ihre Pixeläquivalente undparseInt()
entfernt die'px'
vom Ende der zurückgegebenen Zeichenfolge und konvertiert sie in eine Ganzzahl:http://jsfiddle.net/BXnXJ/
quelle
So erhalten Sie die umliegenden Dimensionen:
Beachten Sie, dass jede Variable
paddingTopBottom
beispielsweise die Summe der Ränder auf beiden Seiten des Elements enthält. dh ,paddingTopBottom == paddingTop + paddingBottom
. Ich frage mich, ob es eine Möglichkeit gibt, sie separat zu erhalten. Wenn sie gleich sind, können Sie natürlich durch 2 teilen :)quelle
IE 7
. Siehe: stackoverflow.com/questions/590602/…Diese einfache Funktion wird es tun:
Verwendung:
quelle
auto
,inherit
und%
WerteNaN
, hängt vom Browser ab. Soweit ich weiß, normalisiert sich jQuery nicht.css()
anders als.width()
&.height()
Parse int
gibt 0 für 0px zurück
quelle
Sie können sie wie bei jedem CSS-Attribut abrufen :
Sie können sie mit einem zweiten Attribut in der CSS-Methode festlegen:
BEARBEITEN: Wenn Sie nur den Pixelwert benötigen, verwenden Sie
parseInt(val, 10)
:quelle
ok nur um die ursprüngliche Frage zu beantworten:
Sie können die Auffüllung als verwendbare Ganzzahl wie folgt erhalten:
Wenn Sie eine andere Messung wie px definiert haben, ersetzen Sie einfach "ems" durch "px". parseInt interpretiert den Stringpart als falschen Wert, daher ist es wichtig, ihn durch ... nichts zu ersetzen.
quelle
Sie können das jquery-Framework auch selbst um Folgendes erweitern:
Fügen Sie dabei Ihren jquery-Objekten eine Funktion namens margin () hinzu, die eine Auflistung wie die Offset-Funktion zurückgibt.
fx.
quelle
Verwenden Sie nicht string.replace ("px", ""));
Verwenden Sie parseInt oder parseFloat!
quelle
Ich benutze wahrscheinlich das gquub-Plugin github.com/bramstein/jsizes für Auffüllungen und Ränder auf sehr komfortable Weise. Danke ...
quelle
Schamlos von Quickredfox übernommen .
aktualisieren
Geändert zu
parseInt(val, 10)
da es schneller ist alsparseFloat
.http://jsperf.com/number-vs-plus-vs-toint-vs-tofloat/20
quelle
Nicht zu Nekro, aber ich habe dies gemacht, das Pixel basierend auf einer Vielzahl von Werten bestimmen kann:
Auf diese Weise berücksichtigen wir die Größenbestimmung und Auto / Erben.
quelle
parseInt()
falsch ist. Die Breite oder Höhe kann Gleitkomma sein.