【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'
});
相关推荐
齐鲁大虾2 分钟前
如何在HTML/JavaScript中禁用Ctrl+C
前端·javascript·html
qq_4061761419 分钟前
深入浅出 Vue 路由:从基础到进阶全解析
前端·javascript·vue.js
紫金修道1 小时前
【OpenClaw】让openclaw根据需求创造自定义skill记录
前端·javascript·chrome
嘉琪0011 小时前
Day6 完整学习包(async/await)——2026 0318
前端·javascript·学习
css趣多多1 小时前
# Vue 3 `<script setup>` 中变量声明的正确姿势:何时必须使用 `ref()`?
前端·javascript·vue.js
kyriewen111 小时前
Sass:让 CSS 从手工作坊迈入工业时代
前端·javascript·css·html·css3·sass·html5
冰暮流星1 小时前
javascript之变量作用域
开发语言·前端·javascript
lxh01131 小时前
嵌套数组生成器题解
开发语言·javascript·ecmascript
Dxy12393102161 小时前
DrissionPage使用js点击:突破常规交互限制的“隐形手”
开发语言·javascript·交互
北寻北爱2 小时前
面试题-js篇
前端·javascript