【JS】计算任意字符串的像素宽度(px)

文章目录

代码实现

函数封装:

ts 复制代码
export function getStringWidthDOM(
  str: string,
  {
    fontSize = '16px',
    fontFamily = 'Segoe UI Emoji, Segoe UI Symbol',
    fontWeight = 'normal',
    fontStyle = 'normal',
  }: { fontSize?: string; fontFamily?: string; fontWeight?: string | number; fontStyle?: string },
): number {
  const span = document.createElement('span');
  span.style.cssText = `
      position: absolute;
      visibility: hidden;
      white-space: nowrap;
      font-size: ${fontSize};
      font-family: ${fontFamily};
      font-weight: ${fontWeight};
      font-style: ${fontStyle};
    `;
  span.textContent = str;
  document.body.appendChild(span);
  const width = span.offsetWidth;
  document.body.removeChild(span);
  return width;
}

使用案例:

ts 复制代码
const width: number = getStringWidthDOM('Hello, TS!', {
  fontSize: '14px',
  fontWeight: 'bold'
});
相关推荐
张元清1 小时前
Pareto 动态路由实战:[slug]、catch-all、嵌套布局
前端·javascript·面试
老王以为1 小时前
深入理解 AbortController:从底层原理到跨语言设计哲学
javascript·设计模式·node.js
懂懂tty2 小时前
React中BeginWork和CompleteWork解析
前端·react.js
梦想CAD控件2 小时前
在线CAD开发包图纸转换功能使用指南
前端·javascript·vue.js
费曼学习法2 小时前
虚拟 DOM 的 Diff 算法:Vue/React 如何实现高效更新
javascript·vue.js
码路飞2 小时前
昨天还在发 Qwen3.5,今天技术负责人就被阿里云赶走了
java·javascript
倾颜2 小时前
pnpm monorepo 下,如何把 Next.js 应用里的稳定内核拆成内部 workspace 包
前端·react.js·next.js
Devin_chen2 小时前
发布订阅模式渐进式学习指南
javascript
菠萝地亚狂想曲3 小时前
Zephyr_01, environment
android·java·javascript