我想知道两个文本节点是否在视觉上连续,无论html结构如何,即两者之间没有空行或任何其他元素.
我正在使用范围来获取矩形(大小和位置),但文本节点之间有一个间距(第一个矩形的底部与第二个矩形的顶部不匹配).
我试图根据line-height和计算这个间距,font-size但我得不到相同的值.
这是我尝试的JsFiddle:https://jsfiddle.net/3behsxxq/5/
有没有办法计算这个间距?
编辑: 在jsFiddle代码的第一种情况下,有四行('第一个文本','块','第二','文本块')在视觉上是连续的,也就是说,它们之间的距离是相同的,但我得到的数字相差7(在第一种情况下).如果我尝试根据line-height/font-size与范围值之间的差异丢弃此空间,则它们不匹配,因此我无法抵消它.
数据
var ranges = [
{ start: 2, end: 5 },
{ start: 8, end: 12 },
{ start: 15, end: 20 },
{ start: 9, end: 11 },
{ start: 2, end: 6 }
];
Run Code Online (Sandbox Code Playgroud)
每个对象代表一个范围.我需要删除包含在另一个中的范围.也就是说,在两个冗余对象之间我需要保持更长的范围.
我写了这段代码,但我想知道是否有更好的方法来实现这个使用lodash.
var Range = {
contains: function(r1, r2) {
return r2.start >= r1.start && r2.end <= r1.end;
}
};
var result = _.chain(ranges)
.filter(function(r2) {
return !_.some(ranges, function(r1) {
return r1 != r2 && Range.contains(r1, r2);
});
})
.value();
console.log(result);
Run Code Online (Sandbox Code Playgroud)
产量 …