Wie kann ich die Standardschriftgröße in Pixel durch Verwendung von JavaScript oder JQuery ermitteln?

9

Wie Sie wissen, ist em eine relative Schriftgröße, wobei ein em gleich der Höhe des Buchstabens "M" in der Standardschriftgröße ist. Ein Vorteil bei der Verwendung ist, dass Sie die Größe des Textes ändern können.

Aber wie kann ich die Standardschriftgröße der aktuellen Umgebung (in Pixel) mit JavaScript oder JQuery erhalten?

Grüße,

    
Arthur Ronald 18.09.2009, 04:04
quelle

8 Antworten

16

Es gibt ein paar Situationen, die nützlich sein können -

%Vor%

alert (getDefaultFontSize ())

    
kennebec 18.09.2009, 12:55
quelle
4

Ein Trick, den ich in der Vergangenheit gesehen / benutzt habe, ist, etwas Text zu rendern (sagen wir 50 beliebige Zeichen oder Ms) und dann die Größe des gerenderten Containers zu messen und die Höhe und Breite von a zu berechnen einzelnes Zeichen. Ist das was du willst? Sie können das Rendering im Hintergrund ausführen, damit der Benutzer es nicht sehen kann.

    
Glenn 18.09.2009 04:34
quelle
4

Ich glaube, das M-Prinzip ist ein Mythos. Zumindest die folgende Dokumentation von Ссылка beweist, dass Berechnungen, die auf dem M-Prinzip basieren, übermäßig kompliziert und kompliziert sind unnötig.

  

Die 'em' Einheit ist gleich der berechneten   Wert der 'font-size' Eigenschaft von   das Element, auf dem es verwendet wird. Das   Ausnahme ist, wenn 'em' in der auftritt   Wert der Eigenschaft 'font-size'   selbst, in diesem Fall bezieht es sich auf die   Schriftgröße des übergeordneten Elements. Es   kann für vertikal oder horizontal verwendet werden   Messung. (Diese Einheit ist auch   manchmal die Quad-Breite genannt   typografische Texte.)

Aus dieser Dokumentation folgt Folgendes:

  1. Ohne vorherige Vergrößerung ist 1em genau gleich der Pixelschriftgröße.

  2. Da die Ahnenvergrößerung mit ems und percent auf genau definierte Weise funktioniert, berechnet eine einfache Schleife exakte Schriftgrößen, unter der Annahme: nein C.S.S; und bei einigen Vorfahren wird die Schriftgröße in absoluten Einheiten angegeben.

  3. Da ems die Breite misst, können Sie immer die exakte Pixelschriftgröße berechnen, indem Sie ein div erstellen, das 1000 ems lang ist und die Eigenschaft client-Width durch 1000 teilt. Ich erinnere mich, dass ems auf das nächste Tausendstel abgeschnitten sind. Sie benötigen also 1000 ems, um eine fehlerhafte Kürzung des Pixelergebnisses zu vermeiden.

  4. Sie können wahrscheinlich eine Schriftart erstellen, bei der das M-Prinzip fehlschlägt, da em auf dem Attribut font-size basiert und nicht auf der tatsächlichen Schriftart. Angenommen, Sie haben eine seltsame Schriftart, in der M 1/3 der Größe der anderen Zeichen ist und Sie eine Schriftgröße von 10 Pixel haben. Ich glaube, dass die Schriftgröße eine Garantie für die maximale Zeichenhöhe ist und das M nicht 10 Pixel und alle anderen Zeichen 30 Pixel groß ist.

Mark Willis 25.12.2010 13:02
quelle
2

Verwenden von jQuery (vorausgesetzt, Sie möchten die Schriftgröße eines bestimmten Elements):

var originalFontSize = $('#your_element_id_here').css('font-size') ;

Wenn Sie sowohl Prototype als auch jQuery verwenden, sollten Sie anstelle des Dollarzeichens das Präfix jQuery verwenden:

%Vor%

Dies wird den Wert als eine Zeichenfolge wie folgt zurückgeben: 16px.

    
Carlos 18.09.2009 06:57
quelle
2

Ich denke, das ist, was Sie suchen:

%Vor%

* Wenn body anderswo im Code eine andere fontSize-Deklaration hat (vielleicht in einigen CSS), gibt die Funktion diesen Wert zurück. Zum Beispiel:

%Vor%

Der obige Wert gibt einen fontSize-Wert von 20px zurück.

Komplett getestet und funktioniert für mich (Chrom 22.0.1229.94 m und Firefox 13.01).     
Xelus 19.10.2012 20:54
quelle
1

Dies funktioniert in FF.

%Vor%     
rahul 18.09.2009 05:25
quelle
0

Auch wenn es so aussieht, als wäre es eine gute Idee, die Standardschriftgröße zu bekommen - wenn Sie das Layout Ihrer Seiten und so einstellen, ist es wahrscheinlich sicherer, den Benutzer einfach damit umgehen zu lassen.

Wenn ihre Schriftgröße größer ist - weil sie blind sind und umgekehrt. Ich würde empfehlen, die Standardeinstellungen festzulegen und eine Auflösung / Größe zu empfehlen. Es sei denn, Ihre App hängt davon ab - lassen Sie den Benutzer damit umgehen.

    
MunkiPhD 18.09.2009 04:16
quelle
0

Es kann mit dieser Codezeile gemacht werden:

%Vor%
  1. window.getComputedStyle(document.body) - um alle Stile für body
  2. zu erhalten
  3. getPropertyValue('font-size') - um einen Zeichenfolgenwert der Schriftgröße zu erhalten, Beispiel: (16px)
  4. match(/\d+/)[0]) - um nur einen Zahlenteil zu erhalten, Beispiel: (16) - string
  5. Number(...) - um den Zahlenteil in eine Zahl zu konvertieren, Beispiel: (16) - Nummer
Aliaksandr Sushkevich 15.03.2018 12:20
quelle