我想弄清楚如何用 jquery 计算一行文本的宽度。
我在字符串中有以下文本
“1号线
2号线
3号线
4号线废话
5号线"
在测试以查找页面上显示的文本的宽度时,它始终显示 77 px,其中第 4 行是最长的。
使用 Jquery 命令 .append() 将文本放入元素 id #text
用于元素的代码是
<div id = 'terminal'><pre><span id = 'text'></span></pre>
我将如何计算第 5 行的宽度?
谢谢 - 瑞安
我想弄清楚如何用 jquery 计算一行文本的宽度。
我在字符串中有以下文本
“1号线
2号线
3号线
4号线废话
5号线"
在测试以查找页面上显示的文本的宽度时,它始终显示 77 px,其中第 4 行是最长的。
使用 Jquery 命令 .append() 将文本放入元素 id #text
用于元素的代码是
<div id = 'terminal'><pre><span id = 'text'></span></pre>
我将如何计算第 5 行的宽度?
谢谢 - 瑞安
- 演示:http: //jsbin.com/otaquf/5
$(function(){
var text = $.trim($('#demo').text());
// this may vary browser to browser...
var text_w_no_empty_lines = text.replace(/[\r\n]+/g, '\n');
var lines = text_w_no_empty_lines.split('\n');
// line number you want total - 1
var line_5 = lines[4];
// .tick { white-space:nowrap;display:inline-block;display:none }
alert( $('<p class="tick">').html(line_5).appendTo('body').width() )
});
<p id="demo" style="white-space:pre">
Line 1
Line 2
Line 3
Line 4 Blah
Line 5
</p>
- 注意:这里的技巧是使用 css
white-space:pre来保持真实的高度和预样式
将字符串放在多个 div 元素中,并在 5 日使用 .width()。
您可以将文本附加到具有宽度:auto 的 div,并采用该 div 的宽度。
像这样的东西:
var auxDiv = $("<div>").css({width : "auto"}).appendTo($("body")).html("<div id = 'terminal'><pre><span id = 'text'></span></pre>");
var widthOfText = auxDiv.width();
auxDiv.remove();
HTML:
<style>.temp{display:none}</style>
<pre class="preview"></pre>
<span class="temp"></span>
JS:
$(document).ready(function(){
var string = 'line 1\nline 2 ... \nline 3..',
lines = string.split('\n'),
$temp = $('.temp').show();
$('.preview').html(string);
$.each(lines, function(key, str) {
console.log(key + ': ' + $temp.html(str).width())
})
$temp.hide();
});
不需要jquery ...你可以只使用offsetWidthDOM中元素的属性