Javascript 获取文本段落中最后一行的宽度
是否有可能以某种方式测量具有多个中断/返回的段落中最后一行文本的长度Javascript 获取文本段落中最后一行的宽度,javascript,jquery,css,Javascript,Jquery,Css,是否有可能以某种方式测量具有多个中断/返回的段落中最后一行文本的长度 Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Donec id elit non mi porta gravida at eget metus. Nulla vitae elit libero, a pharetra augue. Nullam id dolor id nibh
Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Donec id elit non mi porta gravida at eget metus. Nulla vitae
elit libero, a pharetra augue. Nullam id dolor id nibh
ultricies vehicula ut id elit. Vivamus sagittis lacus vel
[here] ->|augue laoreet rutrum faucibus dolor auctor.|<- [to here]
Morbi leo risus,空调门,爱神前庭。
Donec在eget metus为非mi porta孕妇确定了最佳身份。无生命
精英自由主义者,法雷特拉·奥古斯。Nullam id dolor id nibh
ultricies Vehicleu ut id elit。腔隙矢状窝
[此处]>| augue laoreet rutrum faucibus dolor auctor.|编辑:这是在澄清段落中没有换行之前写的。对不起,不适用
如果您在字符串(即段落)的开头和结尾处修剪空白,然后围绕换行符拆分,并获取结果的最后一个元素,您应该已经接近得到所需的内容了
<div class='input'>
Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Donec id elit non mi porta gravida at eget metus. Nulla vitae
elit libero, a pharetra augue. Nullam id dolor id nibh
ultricies vehicula ut id elit. Vivamus sagittis lacus vel
augue laoreet rutrum faucibus dolor auctor.
</div>
<div class='result'>
</div>
莫里·利奥·里索斯,圣殿之门,爱神之门的前庭。
Donec在eget metus为非mi porta孕妇确定了最佳身份。无生命
精英自由主义者,法雷特拉·奥古斯。Nullam id dolor id nibh
ultricies Vehicleu ut id elit。腔隙矢状窝
奥古斯·劳里特·鲁图姆·福西布斯·多洛·奥克托。
及
$('div.result').html(“”)
$('div.input')。每个(函数(){
变量行=$(this).html(
).替换(/^\s+/,“”
).替换(/\s+$/,“”
).split(“\n”)
$('div.result')。追加(“”+
行[lines.length-1]。长度+
“:“+行[lines.length-1]+””
)
})
试试这个
HTML
<div id="demo">
Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Donec id elit non mi porta gravida at eget metus. Nulla vitae
elit libero, a pharetra augue. Nullam id dolor id nibh
ultricies vehicula ut id elit. Vivamus sagittis lacus vel
augue laoreet rutrum faucibus dolor auctor.
</div>
<p id="text">…text…</p>
例如:
/([^\n\t])/g
这样,您将匹配除制表符和换行符以外的任何内容。我注意到,如果只匹配字母和空格,像素计数可能会有点差。它可能会丢失重要的逗号和其他读取符号。在字符串的最末端附加一个零宽度元素并测量其左偏移量就足够了
HTML
<div id="demo">
Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
Donec id elit non mi porta gravida at eget metus. Nulla vitae
elit libero, a pharetra augue. Nullam id dolor id nibh
ultricies vehicula ut id elit. Vivamus sagittis lacus vel
augue laoreet rutrum faucibus dolor auctor.
</div>
<p id="text">…text…</p>
…文本
JS
$(document).ready(function() {
var content = $('#demo').html();
content = content.replace(/(\w|\s)/g, '<span>$1</span>');
$('#demo').html(content);
// Check each <span> for its offsetTop
var highest_top = 0;
var tmp_top = 0;
$('#demo span').each(function() {
tmp_top = $(this)[0].offsetTop;
if (tmp_top > highest_top) {
highest_top = tmp_top;
}
});
// Collect total width
var total_width = 0;
$('#demo span').each(function() {
check_top = $(this)[0].offsetTop;
if (check_top == highest_top) {
total_width += $(this).width();
}
});
console.log(total_width);
});
// NOTE: This assumes LTR text!
// Using JQuery for simpler code
var $el = $("#text");
var originalText = $el.html();
$el.html(originalText + "<span id='cursor'></span>");
alert($("#cursor").offset().left + "px");
$el.html(originalText);
//注意:这假定为LTR文本!
//使用JQuery获得更简单的代码
var$el=$(“#文本”);
var originalText=$el.html();
$el.html(originalText+“”);
警报($(“#光标”).offset().left+“px”);
$el.html(原始文本);
jsiddle:也许这会有所帮助:有一种技术可以将字符串克隆到要测量的隐藏内联元素中(就像将输入元素自动调整为其值)。所以,我想关键是这是一段的最后一行。我不清楚文本中是否有手动换行符。这是一行包裹在里面的文本,比如说,一个
标签。噢,很棘手。这要困难得多。并且可能取决于显示特性。对不起,我想不出一个办法。这是一个疯狂的、创造性的、简单的解决方案。我从来没有这样看过,+1这太棒了。还有Duuuuuuuh。非常简单和优雅。我认为使用.position()而不是.offset()更合适,但这一个得到了选中标记!在我的情况下不起作用,因为段落围绕着一个浮动的图像。这真的很聪明!谢谢你,老板!