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 の連続するハイライトは前のハイライトに依存しているため、span
rangy によって作成された高さと幅をコピーして、別のルート ノードに配置しようとしています。ただし、新しく作成された の幅が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
明らかに異なるにもかかわらず、幅が報告されています。なぜこうなった?