pdf.jsを使用してレンダリングされたテキストの選択範囲のハイライトを作成するために rangy を使用しています。ハイライト表示の CSSspanは非常に単純です。
.image-highlight {
background-color: rgba(152, 210, 146, 0.45);
border: 1px solid #000000; //added this for debugging.
cursor: pointer;
}
rangy の連続するハイライトは前のハイライトに依存しているため、spanrangy によって作成された高さと幅をコピーして、別のルート ノードに配置しようとしています。ただし、新しく作成された の幅がspan元の よりも大きいことに気付きましたspan。また、イライラするのは、明らかに異なるにもかかわらず、 Chrome が の両方spanのに対して同じ幅を報告することです!px
最初のspan(rangy によって作成された) 幅は、開発者ツールバーのauto下に表示されたときに Chrome によって報告されMetricsた幅ですが、2 番目のスパン (私が作成したもの) の幅は を介して明示的に設定され$.widthます。
これが私がspanオーバーコピーしている方法です:
var $selectionSpan = jQuery("<span></span>").
attr("id", "created-" + new Date().getTime()).
css("position", "absolute").
css("z-index", 999).
offset({
top: $span.offset().top,
left: $span.offset().left
}).
height($span.height()).
width($span.width());
$selectionSpan.get(0).className = $span.get(0).className;
そして、幅が両方spanの s で同じであることを報告する Chrome の写真を次に示します。

ご覧のとおり、112px明らかに異なるにもかかわらず、幅が報告されています。なぜこうなった?