【JavaScript】如何根据长度并计算渲染px width宽度

ElementUI中el-table列宽动态适配:基于内容长度的智能计算方案 本文深入探讨了ElementUI中el-table组件列宽动态适配的智能计算方案。针对固定列宽导致内容显示不全或布局混乱的痛点,文章提供了基于JavaScript动态测量内容像素宽度的核心方法,通过getTextWidth函数精确计算,并结合flexColumnWidth函数实现列宽自适应。方案涵盖了基础实现、性能优化、与ElementUI原生属性联动及常见问题避坑指南,旨在帮助开发者构建灵活、美观且用户体验更佳的数据表格。 阅读详情

需求

公司项目需求是要做动态响应式表头,因此就要动态渲染表格表头宽度在一定范围内(100px-200px)。
完整实现图:image

实现过程

这里就不讲css自动超出省略了,主要是然后根据后台返回的字符串计算实际渲染字符宽度,并设置给 element 表头的 min-width

:min-width="calcMinWidth(item.displayName)"

核心函数代码:

calcMinWidth(displayName) {
      // 100 - 200
      // console.log(displayName.length)
      console.log(displayName)
      // 计算文本在页面所占px宽度 -- 扩展String原型方法pxWidth
      String.prototype.pxWidth = function(font) {
        const canvas =
          String.prototype.pxWidth.canvas ||
          (String.prototype.pxWidth.canvas = document.createElement('canvas'))
        const context = canvas.getContext('2d')
        font && (context.font = font)
        const metrics = context.measureText(this)
        return metrics.width
      }
      // 根据需求范围返回
      const width = displayName.pxWidth('bold 18px Lato') + 30
      if (width <= 100) {
        return '100'
      } else if (width >= 200) {
        return '200'
      } else {
        return width + ''
      }
    },

因为我这个是英文项目,没有考虑中文字符,如果存在中文字符还需要特别处理,更多请参考下面的文章。

参考链接

js获取字符长度并计算px宽度

微信小程序marker 上的自定义气泡cover-view字体丢失以及max-width不生效问题 阅读详情

相关推荐

纯前端JavaScript实现眼镜虚拟试戴:人脸检测+WebGL实时渲染

虚拟试戴(virtual try-on)是一种基于计算机视觉与3D图形学的交互技术,其核心原理是通过人脸检测定位关键点,结合三维姿态估计与几何适配算法,将数字商品精准叠加至用户实时视频流中。该技术具备零隐私风险、低延迟、跨平台部署等工程价值,广泛应用于电商眼镜选购、远程验光服务及AR营销场景。本文聚焦纯前端实现路径,以JavaScript为开发语言,依托MediaPipe轻量人脸模型与原生WebGL渲染管线,在不依赖服务器、不上传图像的前提下,达成60fps稳定运行与毫米级镜框贴合精度,是Web端实时视觉处

weixin_30367873的博客 312

JS 实现计算字符串的实际宽度

JS 实现计算字符串的实际宽度

momo_mom177的博客 1353

Word排版单位全解析:px、pt、dpi、in、em、twip、emu换算与应用

在文档处理和排版领域,理解度量单位是确保精确性与一致性的基础。绝对长度单位(如英寸、磅)定义了物理世界的固定尺寸,而相对单位(如像素、em)则依赖于设备分辨率或上下文字体大小。分辨率单位DPI作为关键桥梁,连接了屏幕像素与物理尺寸,其数值直接影响显示效果。掌握这些单位的换算原理,对于实现跨平台文档显示一致、打印输出精准以及自动化排版开发具有重要技术价值。本文聚焦Word环境,深入解析px、pt、twip、emu等七种核心单位间的换算关系,并通过VBA编程、Open XML处理等实际场景,提供排查显示错乱、打

weixin_33717117的博客 372

JS测量文字的宽度px和高度px

如果单纯测量文字宽度px,比较常用的方法是使用canvas的context.measureText: function measureUseCanvas(fontSize, fontFamily, text) { var canvas = document.createElement("canvas"); var context = canvas.getContext(...

qq_34452824的博客 5218

CSS calc() 原理与实战:让样式具备动态计算能力

calc() 是 CSS 原生支持的运行时数学计算机制,属于现代布局基础设施,其本质不是函数而是值解析阶段的内联运算符。它基于 CSS 单位维度规则(如 <length>)实现安全的加减乘除,支持百分比、px、rem、vh 等混合运算,但严禁跨参考系叠加(如 100% + 100vh)。技术价值在于零 JS 干预、无重排开销、服务端渲染一致,广泛应用于响应式留白控制、滚动容器自适应高度、flex/grid 动态列宽计算等高频场景。本文聚焦真实工程问题,结合 CSS 自定义属性、DevTools 调试技巧与兼

weixin_33797791的博客 361

Node.js-string-width-得到字符串的视觉宽度显示所需的列数

string-width - 得到字符串的视觉宽度,显示所需的列数

JS计算字符串在浏览器中显示的宽度

js计算字符串宽度 大家可能会碰到这样一个需求:一个容器的宽度固定,当内容的宽度超过容器的宽度时鼠标移入显示提示框,不超过时则不显示。 这个时候就需要知道内容到底多宽。 怎么计算宽度 一 、估计法 假设文字大小是14px,如果字符的长度是10,那么内容的宽度大概是14*10=140 ,这种方法显然误差很大,数字,特殊字符,英文字母,汉字的大小各不相同。 二、真实计算法 利用offsetWi...

qq_24134853的博客 3850

HID报告描述符实战解析:从Usage到Item的完整设计流程

本文深入解析了HID报告描述符的设计流程,从核心概念Usage(用途定义)入手,详细阐述了如何通过Item(条目)的三种角色——全局、局部与主干,构建出能被系统正确识别的设备“说明书”。文章以标准USB鼠标和键盘为例进行实战拆解,并介绍了使用Report ID与自定义设备等进阶设计方法,帮助开发者掌握这一实现USB设备即插即用的关键技术。

weixin_29230865的博客 282

掌握好这几个css属性,少写100行js代码

1.calc函数 calc可动态设置某个元素的长度。 html{ font-size:calc(100vw / 8) } .main{ width:100%; height:calc(100vh - 200px) } 比如上述代码,把main元素的高度就设置为当前窗口的高度减去200px,字体大小也可用于此函数实现自适应字体;这个函数可用于所有css长度的属性 2.attr函数 这个函数用于获取元素的属性的值,我常用于在before等伪类样式中。 ul li:

高先生的猫 705

从空调温控到信号降噪:一阶RC低通滤波器在Arduino和STM32上的C语言实现指南

本文详细介绍了如何在Arduino和STM32平台上使用C语言实现一阶RC低通滤波器,涵盖从基础理论到实际应用的完整流程。通过具体代码示例和优化技巧,帮助开发者有效处理传感器噪声、信号平滑等问题,提升嵌入式系统的信号处理能力。

weixin_30565199的博客 501

量子通信:初识量子城域网

对量子城域网的概念、作用、拓扑、建设内容等进行了较为全面的初步介绍。

量子领域相关话题 3344

js获取文本在页面长度px

js获取文本在页面长度

rain_lili的博客 1006

点餐系统数据库设计--SQL Server

友情链接 1、学生成绩管理系统数据库设计–MySQL 学生成绩管理系统数据库设计–MySQL 2、医疗信息管理系统数据库–MySQL 医疗信息管理系统数据库–MySQL 3、邮件管理数据库设计–MySQL 邮件管理数据库设计–MySQL 4、SQL Server医疗信息管理系统数据库【英文版-源码】–(Medical Management System Database) SQL Server医疗信息管理系统数据库【英文版-源码】–(Medical Management System Database) 5

若如初见 8万+

vue v-for动态渲染元素,元素长度超过限制样式设置

动态渲染元素时,如果元素的长度超过限制,可以通过一些简单的 CSS 和 JavaScript 来实现展示省略号的效果。这样,每项文本的长度都会被动态计算并截断,如果超过10个字符就显示省略号。在 Vue.js 中,使用。的值来控制文本显示的长度。

m0_67841039的博客 768

VBA中如何使用Edge内核Browser?

在微软宣布停止对IE的支持后,许多使用VBA中Web Browser的用户遇到了困境,因为Web Browser使用的IE内核。然而微软并没有给出支持Edge的新版Web Browser,网上许多第三方的库也不够完善。经过调研,libEdge可以较好的和VBA集成,实现在Excel中打开Browser,甚至能够通过执行js代码,获取web页面的信息。项目需要WebView2Loader.dll和LibEdge.dll两个库,区分x86和x64版本。

金木AI 2396

WorldQuant Brain Alpha 生成器

一个自动化工具,通过参数优化和回测来挖掘高质量的量化交易 Alpha 因子,并自动提交符合标准的因子。

weixin_37582383的博客 1万+

CSS尺寸单位理解px、em、rem、vw、vh

掌握相对单位和绝对单位的区别,在合适的场景使用相应的单位,CSS功能日益丰富,网页内容也日益内容多样化,理解其原理,方能知其真谛!

港城大白鲨 649

Postman账号

Postman账号一、为什么要注册一个Postm账号二、如何注册Postman账号三、登录账号四、切换账号五、找回账号密码 一、为什么要注册一个Postm账号 注册Postman账号是免费的。当注册并登录一个Postman账号后,用户可以获得一下权限。 (1)同步和备份历史、集合、环境和预置头。 (2)可以轻松处理来自不同机器的多个Postman实例‘ (3)创建集合链接发送给其他开发人员。 当然,不注册也可以使用Postman。 二、如何注册Postman账号 (1)下载、安装Postman应用程序。 (

精益求精,永无止境,永远在路上! 6772

Vue自适应标签页组件:文字长度驱动的动态宽度分配

标签页(Tabs)是前端开发中最基础也最易被低估的UI组件,其核心挑战在于如何在多变内容长度下实现视觉均衡与交互稳定。传统CSS方案如Flex均分或Grid auto-fit无法精准匹配文本实际宽度,导致短标签空洞、长标签截断。本文聚焦Vue生态下的生产级解决方案,通过JavaScript驱动的DOM测量(getBoundingClientRect)、ResizeObserver+nextTick双时机控制、像素级向上取整(Math.ceil)及30px滑动阈值等工程实践,实现‘按字分配宽度’的呼吸感体验。

weixin_34277853的博客 317

2025年09月中国电子学会青少年软件编程(Python)等级考试试卷(一级)答案 + 解析

2025年09月中国电子学会青少年软件编程(Python)等级考试试卷(一级)答案 + 解析

伶俐角少儿编程 639

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

THREE.MeshLine:突破WebGL线条渲染限制的网格化解决方案

在WebGL和Three.js的3D可视化开发中,线条渲染一直是一个技术难点。传统的`THREE.Line`类使用GL_LINE渲染方式,存在线宽无法超过1像素、不支持抗锯齿、视觉效果单一等固有局限。THREE.MeshLine作为Three.js的扩展库,通过创新的网格化方案彻底改变了线条渲染的游戏规则,为开发者提供了强大而灵活的3D线条渲染能力。 ## 技术痛点:为什么需要THREE.Mes

gitblog_00380的博客 776

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Element UI表格表头自适应不换行:JS动态计算列宽实战方案

在前端开发中,表格组件是数据展示的核心控件,其渲染性能与视觉体验直接影响用户操作效率。表格渲染的核心原理涉及DOM布局、CSS样式计算与组件生命周期管理。通过精确控制列宽自适应,能显著提升数据表格的视觉稳定性与专业度,尤其在后台管理系统、数据报表等需要频繁查看与对比数据的工程实践场景中价值突出。本文聚焦于解决Element UI el-table组件常见的表头文本换行问题,通过JavaScript动态计算方案,结合Canvas文本测量与getComputedStyle样式获取,实现表头与数据列宽的自适应匹配

weixin_34082789的博客 311

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Vue自适应标签页组件:文字撑开宽度+像素级指示器

Tabs组件是前端开发中高频使用的导航控件,其核心挑战在于实现真正的内容自适应宽度与视觉一致的激活指示器。传统CSS方案如flex:1或fit-content在Vue响应式更新中存在渲染时机不可控、字体度量不精准等问题,导致文字溢出、截断失效或indicator跳变。本文基于文本度量+动态计算原理,通过预渲染span复现真实字体上下文、transform替代left实现GPU加速滑动、以及resize防抖与缓存机制,在Vue 2/3双版本下达成毫秒级精度的宽度控制与100%可预测的indicator同步。适

weixin_34162228的博客 358

CSS calc() 原理解析:混合单位动态计算与工程实践

calc() 是 CSS 原生支持的动态计算函数,本质是渲染引擎内置的类型安全表达式求值器,允许在样式层面对百分比、px、rem、vw 等长度单位进行线性混合运算。其核心价值在于脱离 JavaScript 实现轻量级响应式布局,通过运行时上下文(如容器宽、根字体大小)自动重算,零延迟、零重排。结合 CSS 自定义属性(--var),calc() 成为构建可维护主题系统、智能栅格、比例化 UI 和动态断点的关键基础设施。本文深入解析其单位兼容规则、性能边界、常见静默失效场景及大型项目落地规范,覆盖从基础语法到

weixin_30542079的博客 364

bug 记录 - 字符加粗导致宽度变化抖动问题

【代码】bug 记录 - 字符加粗导致宽度变化抖动问题。

神膘护体小月半的博客 283

总结1(2020-01-14)

一. 在浏览器页面上点击某个按钮或其他标签定位到指定的位置 1.1 用锚点 <!-- ①:设置一个锚点链接<a href="#miao">去找喵星人</a>(注意:href属性的属性值最前面要加#) --> <a href="#miao">去找喵星人</a> <!-- ②:在页面中需要的位置设置锚点<a name="m...

老练 521
上一篇: 【Element】el-table-column 使用slot插槽v-if数据更新后没有渲染
下一篇: 【Git】切换分支相互影响的问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值