>웹 프론트엔드 >JS 튜토리얼 >고정 폭 글꼴 없이 JavaScript에서 텍스트 너비를 정확하게 계산하는 방법은 무엇입니까?

고정 폭 글꼴 없이 JavaScript에서 텍스트 너비를 정확하게 계산하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-22 06:08:10817검색

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

고정폭 서체 없이 JavaScript에서 텍스트 너비 계산

질문:

어떻게 하면 JavaScript에서 고정 폭 서체 없이 텍스트 너비를 정확하게 계산할 수 있습니까? 고정폭에 의존 글꼴?

답변:

HTML 5에서는 Canvas.measureText 메서드가 솔루션을 제공합니다. 예는 다음과 같습니다.

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;
}

이 함수는 지정된 글꼴을 기반으로 텍스트 너비를 픽셀 단위로 측정합니다. 예를 들어:

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

getCanvasFont 유틸리티 함수를 사용하여 기존 요소에서 글꼴 설정을 결정할 수도 있습니다.

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));

장점 및 고려 사항

이 접근 방식은 다음보다 이점을 제공합니다. DOM 기반 방법:

  • 간결함과 안전
  • 사용자 정의 옵션(예: textAlign, textBaseline)

그러나 다음 사항에 유의하세요.

  • 패딩, 여백 및 테두리를 고려해야 합니다. DOM에 텍스트를 추가할 때
  • 다른 브라우저는 하위 픽셀 또는 정수를 제공할 수 있습니다. 정확도
  • Firefox는 Canvas 방식으로 더 빠른 성능을 발휘합니다

위 내용은 고정 폭 글꼴 없이 JavaScript에서 텍스트 너비를 정확하게 계산하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.