我有一个应用程序,它使用<mark>
标记以交互方式突出显示文本。当用户拖动鼠标时,它会包装和打开文档中的文本节点,以向用户显示所选内容。当所选范围在单词中间结束时,标记仅围绕单词的一部分。如果边界位于紧排对之间,则紧排将被禁用。
这里有一个例子:
p { font-size: 30pt; margin: 0; line-height: 26pt; }
<p>There <mark>are 1</mark>1 entries.</p>
<p>There are 11 entries.</p>
在第一段中,<mark>标记在两个"1"数字之间结束。第二段具有相同的文本,没有<标记>。字体大小、边距和行距都经过了调整,使段落更加紧密,使差异更加明显。
带有<标记>而不是没有。由于这种情况在应用程序中以交互方式发生,当用户在1上拖动鼠标时,后续文本在1之间向右移动,然后在经过下一个字符时向后移动。文本的"抖动"可能很烦人。
是否有任何方法可以告诉浏览器不要将标记标记视为紧排边界?也许是字体功能设置?
好吧,你可以完全关闭紧排。。。我认为这是最接近于看不到效果的,因为紧排边界将始终位于标记边界。
p { font-size: 30pt; margin: 0; line-height: 26pt; font-kerning: none; }
mark { margin: 0; font-kerning: none; }
<p>There <mark>are 1</mark>1 entries.</p>
<p>There are 11 entries.</p>
考虑使用::selection
伪元素来控制所选文本的高亮显示。
如果您想插入mark
标签,可以在选择过程完成后进行。在这一点上,您将失去标记边界处的紧排,但至少在用户选择时不会看到抖动。
::selection {
background-color: yellow;
}
There are 11 entries.<br/>
There are 11 entries.
我一直在反复搜索有关它的"cleans"修复程序,但我只找到了margin
属性的一种方法。
看看这个
mark { margin: 0 -1pt; }
希望它能帮助