JavaScriptでテキストの幅を取得する方法

JavaScriptでテキストの幅を取得する方法:

描画する前にテキスト幅を事前取得したい場合に使える。


clientWidth を使った方法

clientWidthを使った方法
const span = document.createElement('span'); 
    span.style.position = 'absolute'; 
    span.style.top = '-9999px'; 
    span.style.fontSize = '13px'; 
    span.style.fontFamily = 'Segoe UI'; 
    span.textContent = 'あいうえお'; 
    // 一旦 DOM Tree に append しないといけない 
    document.body.appendChild(span); 
    console.log(span.clientWidth); 
    // 幅を取得したら remove 
    document.body.removeChild(span); 
事前にとはいいつつも、一旦 DOM に追加しているので、あまりよろしくない。


measureText を使った方法

measureTextを使った方法
// canvas は DOM Tree に append しなくてもいい 
    const ctx = document.createElement('canvas').getContext('2d'); 
    ctx.font = '13px "Segoe UI"'; 
    console.log(ctx.measureText('あいうえお').width); 
簡潔。


結論

measureText を使った方法が簡潔で良い。DOM Tree を汚さなくて済むのも良い。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2020-12-01 09:41:49 RSSフィード2020-12-01 09:00 分まとめ(69件)