Heim > Web-Frontend > js-Tutorial > Wie berechnet man die Textbreite in JavaScript ohne Monospace-Schriftarten genau?

Wie berechnet man die Textbreite in JavaScript ohne Monospace-Schriftarten genau?

DDD
Freigeben: 2024-12-22 06:08:10
Original
849 Leute haben es durchsucht

How to Accurately Calculate Text Width in JavaScript Without Monospace Fonts?

Berechnung der Textbreite in JavaScript ohne Monospace-Schriftart

Frage:

Wie kann die Textbreite in JavaScript ohne genau berechnet werden? auf Monospace verlassen Schriftarten?

Antwort:

In HTML 5 bietet die Methode Canvas.measureText eine Lösung. Hier ist ein Beispiel:

function getTextWidth(text, font) {
  const canvas = document.createElement('canvas');
  const context = canvas.getContext('2d');
  context.font = font;
  const metrics = context.measureText(text);
  return metrics.width;
}
Nach dem Login kopieren

Diese Funktion misst die Textbreite in Pixel basierend auf einer angegebenen Schriftart. Zum Beispiel:

console.log(getTextWidth('hello there!', 'bold 12pt arial')); // Outputs approximately 86
Nach dem Login kopieren

Sie können Schriftarteinstellungen auch aus vorhandenen Elementen mithilfe der Dienstprogrammfunktion getCanvasFont ermitteln:

function getCanvasFont(el) {
  const fontWeight = getCssStyle(el, 'font-weight') || 'normal';
  const fontSize = getCssStyle(el, 'font-size') || '16px';
  const fontFamily = getCssStyle(el, 'font-family') || 'Times New Roman';
  return `${fontWeight} ${fontSize} ${fontFamily}`;
}

const fontSize = getTextWidth(text, getCanvasFont(myEl));
Nach dem Login kopieren

Vorteile und Überlegungen

Dieser Ansatz bietet Vorteile gegenüber DOM-basierte Methoden:

  • Prägnanz und Sicherheit
  • Anpassungsoptionen (z. B. textAlign, textBaseline)

Beachten Sie jedoch Folgendes:

  • Abstand, Rand und Rahmen müssen berücksichtigt werden beim Hinzufügen von Text zum DOM
  • Verschiedene Browser bieten möglicherweise Subpixel oder Ganzzahl Genauigkeit
  • Firefox zeigt mit der Canvas-Methode eine schnellere Leistung

Das obige ist der detaillierte Inhalt vonWie berechnet man die Textbreite in JavaScript ohne Monospace-Schriftarten genau?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage