【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'
});
相关推荐
王林不想说话33 分钟前
提升工作效率的Utils
前端·javascript·typescript
weixin_584121431 小时前
vue内i18n国际化移动端引入及使用
前端·javascript·vue.js
imkaifan1 小时前
bind函数--修改this指向,返回一个函数
开发语言·前端·javascript·bind函数
阿里巴啦1 小时前
React+go实现AI 图像生成落地实践:文生图、图生图的工程项目
人工智能·react.js·ai作画·七牛云·ai生图·ai图生图
xkxnq1 小时前
第一阶段:Vue 基础入门(第 7 天)
前端·javascript·vue.js
光头闪亮亮1 小时前
企业协同办公系统(OA)-【图标选择器】模块开发详解
前端·javascript·vue.js
pas1361 小时前
22-mini-vue props
前端·javascript·vue.js
pas1361 小时前
23-mini-vue 实现 emit 功能
前端·javascript·vue.js
黛色正浓1 小时前
leetCode-热题100-子串合集(JavaScript)
javascript·算法·leetcode
有意义1 小时前
用心写好一个登录页:代码、体验与细节的平衡
前端·react.js·交互设计