Angenommen, die Regel lautet wie folgt:
.largeField {
width: 65%;
}
Gibt es eine Möglichkeit, '65% 'irgendwie zurückzubekommen und nicht den Pixelwert?
Vielen Dank.
BEARBEITEN: Leider ist die Verwendung von DOM-Methoden in meinem Fall unzuverlässig, da ich ein Stylesheet habe, das andere Stylesheets importiert, und der Parameter cssRules daher entweder den Wert null oder einen undefinierten Wert hat.
Dieser Ansatz würde jedoch in den einfachsten Fällen funktionieren (ein Stylesheet, mehrere separate Stylesheet-Deklarationen innerhalb des Head- Tags des Dokuments).
Antworten:
Ich fürchte, es gibt keinen eingebauten Weg. Sie können so etwas tun:
quelle
class="largeField"
die Spanne hinzufügen , derzeit wählen Sie eine leere Menge.Einfachster Weg
quelle
style="width:65%"
. B. ).Das ist definitiv möglich!
Sie müssen zuerst das übergeordnete Element ausblenden (). Dadurch wird verhindert, dass JavaScript Pixel für das untergeordnete Element berechnet.
Siehe mein Beispiel .
Nun ... ich frage mich, ob ich diesen Hack als Erster entdecke :)
Aktualisieren:
Einzeiler
Es hinterlässt ein verstecktes Element vor dem
</body>
Tag, das Sie möglicherweise möchten.remove()
.Sehen Sie sich ein Beispiel für einen Einzeiler an .
Ich bin offen für bessere Ideen!
quelle
Sie können auf das
document.styleSheets
Objekt zugreifen :quelle
styleSheets[0]
) verwendet.for (var i=0; rules.length; i++)
funktionieren? Sollte es nicht seinfor (var i=0; i<rules.length; i++)
Verspätet, aber für neuere Benutzer, versuchen Sie dies, wenn der CSS-Stil einen Prozentsatz enthält :
quelle
Ein jQuery-Plugin basierend auf Adams Antwort:
Gibt '65% 'zurück. Gibt nur gerundete Zahlen zurück, um besser zu funktionieren, wenn Sie möchten, wenn (width == '65%'). Wenn Sie Adams Antwort direkt verwendet hätten, hätte das nicht funktioniert (ich habe so etwas wie 64.93288590604027). :) :)
quelle
Aufbauend auf der hervorragenden und überraschenden Lösung von timofey finden Sie hier eine reine Javascript-Implementierung:
Hoffe, es ist hilfreich für jemanden.
quelle
{
am Ende der ersten Zeile vergessen haben .Ich habe ein ähnliches Problem beim Abrufen der Werte des globalen Stylesheets in jQuery . Schließlich habe ich die gleiche Lösung wie oben gefunden .
Ich wollte nur die beiden Fragen miteinander verknüpfen, damit andere von späteren Erkenntnissen profitieren können.
quelle
Sie können Stile, auf die Sie mit jQuery zugreifen müssen, wie folgt einfügen:
Dann sollte es möglich (wenn auch nicht unbedingt einfach) sein, eine js-Funktion zu schreiben, um alles innerhalb der Stil-Tags im Dokumentkopf zu analysieren und den gewünschten Wert zurückzugeben.
quelle
Mit der Funktion css (width) können Sie die aktuelle Breite des Elements zurückgeben.
dh.
Siehe auch: http://api.jquery.com/width/ http://api.jquery.com/css/
quelle
In jQuery gibt es nichts und auch in Javascript nichts Unkompliziertes. Ausgehend von der Antwort von timofey habe ich diese Funktion erstellt, mit der Sie alle gewünschten Eigenschaften abrufen können:
quelle
Konvertieren Sie mithilfe der Kreuzmultiplikation von Pixel in Prozent .
Formel-Setup:
1.) (element_width_pixels / parent_width_pixels) = (element_width_percentage / 100)
2.) element_width_percentage = (100 * element_width_pixels) / parent_width_pixels
Der eigentliche Code:
quelle