我有一个使用<mark>
标记的应用程序以交互方式突出显示文本。当用户拖动鼠标时,它会包装和展开文档中的文本节点,以向用户显示选择。当所选范围在单词的中间结束时,标记仅包围单词的一部分。如果边界位于kerned对之间,则禁用字距调整。
以下是一个例子:
p { font-size: 30pt; margin: 0; line-height: 26pt; }
<p>There <mark>are 1</mark>1 entries.</p>
<p>There are 11 entries.</p>
在第一段中,&lt; mark&gt;标签在两个“1”数字之间结束。第二段具有相同的文本,没有&lt; mark&gt;。调整字体大小,边距和行间距以使段落更加接近,以使差异更加明显。
1与&lt; mark&gt;之间的空间更大比没有。由于这在应用程序中以交互方式发生,因此当用户将鼠标拖过1s时,后续文本在它们位于1之间时向右移动,然后当它们越过下一个字符时向后移动。文本的“摇晃”可能很烦人。
有没有办法告诉浏览器不将标记标记视为字距边界?也许是字体功能设置?
答案 0 :(得分:2)
嗯,你可以完全关闭字距调整...我认为你最接近的是没有看到效果,因为字距调整边界将始终位于标签边界。 / p>
p { font-size: 30pt; margin: 0; line-height: 26pt; font-kerning: none; }
mark { margin: 0; font-kerning: none; }
&#13;
<p>There <mark>are 1</mark>1 entries.</p>
<p>There are 11 entries.</p>
&#13;
答案 1 :(得分:1)
考虑使用::selection
伪元素来控制所选文本的突出显示。
如果您想插入mark
标签,则可以在选择过程完成后执行此操作。此时你将失去标签边界的字距,但至少你不会看到用户选择的抖动。
::selection {
background-color: yellow;
}
There are 11 entries.<br/>
There are 11 entries.
答案 2 :(得分:0)