【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'
});
相关推荐
jqq6665 分钟前
解析ElementPlus打包源码(五、copyFiles)
前端·javascript·vue.js
wordbaby35 分钟前
TanStack Router 实战:如何优雅地实现后台管理系统的“多页签” (TabList) 功能
前端·react.js
还不秃顶的计科生1 小时前
defaultdict讲解
开发语言·javascript·ecmascript
花归去1 小时前
echarts 柱状图包含右侧进度
开发语言·前端·javascript
沐浴露z1 小时前
学习通“只能录入不能粘贴” 解决方案与原理分析
javascript
Sapphire~1 小时前
Vue3-03 熟悉src文件夹及Vue文件格式
前端·javascript·vue.js
ChangYan.2 小时前
Electron使用ffi-napi报错External buffers are not allowed解决办法
前端·javascript·electron
阿民_armin2 小时前
移动端长列表「返回原位置」的完整实践
前端·javascript·vue.js
Arnbit1on2 小时前
使用docxtemplater进行Word文档的自动填充
javascript
张元清2 小时前
告别 Promise.all 的依赖困境:better-all 如何优雅管理异步任务
前端·javascript·面试