【问题标题】:How to wrap text that crosses node boundaries in span(s)?如何在跨度中包装跨越节点边界的文本?
【发布时间】:2016-06-15 15:47:58
【问题描述】:

我想为用户在我的网页上选择的文本应用一种样式,例如黄色背景。不幸的是,所选文本可能会跨越节点边界(例如,它可能从一个 div 的中间开始,在另一个 div 的中间结束)。

将跨度(或多个跨度)环绕所有选定文本的最佳方式是什么?

设置

<div>This sentence is not selected. THIS SENTENCE </div>
<div>IS SELECTED. This sentence is not selected.</div>

想要的结果

<div>This sentence is not selected. <span>THIS SENTENCE</span> </div>
<div> <span>IS SELECTED.</span> This sentence is not selected.</div>    

这里有两个类似的问题(onetwo)仅限于选择不跨越节点边界的情况。

【问题讨论】:

标签: javascript jquery selection word-wrap


【解决方案1】:

只有 Firefox 允许每次选择多个范围。
所有其他浏览器都限制在getSelection() 的一个范围内。

【讨论】:

    【解决方案2】:

    要应用一种样式,我建议不要错过您的 html,而是可以使用它:

    ::selection {
        background: #ffb7b7; /* WebKit/Blink Browsers */
    }
    ::-moz-selection {
        background: #ffb7b7; /* Gecko Browsers */
    }
    

    无论如何,问题在于您只能更改colorbackground CSS 属性。

    可以在此处找到有关此技术的更多信息: https://css-tricks.com/overriding-the-default-text-selection-color-with-css/

    【讨论】:

    • 这不符合我的要求,因为即使在用户取消选择文本之后,文本也需要设置样式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 1970-01-01
    相关资源
    最近更新 更多