javascript - 如何使用 jquery 以编程方式从跨度中获取像素宽度

标签 javascript jquery html

我正在尝试做类似的事情:

 $('<span>random text in here</span>').width()

但它返回的宽度为 0。(我尝试这样做的原因是获取给定文本的像素宽度。)

我如何以编程方式获得此宽度?

谢谢

最佳答案

你必须渲染它。

你可以这样做:

var s = $('<span>random text in here</span>');
s.appendTo(document.body);
var w = s.width();
s.remove();

Demonstration

请注意:

  • 如果您像我一样一次性完成,则不会显示任何内容。出于所有实际目的,没有在 DOM 中插入任何内容,
  • 您也可以使用内存 Canvas ,但它无法处理比简单文本更复杂的任何内容,并且不会考虑您的 span 的 css 设置。

这是使用内存 Canvas 测量某些文本宽度的解决方案:

var canvas = document.createElement('canvas');
var c = canvas.getContext('2d');
// set here c.font to adjust it to your need
var w = c.measureText('random text in here').width;

Demonstration

在一般情况下我会使用第一个,但这可能取决于为什么您要测量文本。

关于javascript - 如何使用 jquery 以编程方式从跨度中获取像素宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13273879/

相关文章:

Jquery 或 CSS?...用于缩放 div

javascript - 无法从注册表中将数据从 PHP 插入到 MYSQL 服务器

javascript - 我的 jquery 代码片段仅在控制台中有效

javascript - D3 IE8 兼容性?

javascript - 我如何使用此 javascript 使背景颜色自动更新?

javascript - JQuery:无法在同一 div 中定位 h3?

jquery - 同时更改多个div的背景颜色

javascript - javascript onclick 属性如何通过循环从数组中获得更多输出?

javascript - 选择 2 个 DIV 元素

javascript - 移动 TD 元素并使用 JQuery 重新排序