猿问

更改 div 中所选文本的字体颜色

我有一个事件监听div,以便在用户选择文本时发出通知。我通过获得选定的文本,但我也想通过给出字体颜色来标记该特定文本,但不知道如何。我无法向该特定选择范围添加范围。任何想法如何实现这一目标?假设我有div,如下所示mouseUpwindow.getSelectoin().toString()


<div>

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore

et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris

nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit

esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident,

sunt in culpa qui officia deserunt mollit anim id est laborum

</div>

因此,如果用户在其中选择了一些文本,我应该用一些字体颜色标记它。字体颜色应永久粘贴文本。所以我不能使用::选择。提前致谢


杨__羊羊
浏览 210回答 3
3回答

万千封印

我认为你需要的是CSS,而不是任何JS脚本:您可以使用属性:::selection你可以运行下面的代码片段( 代码参考和更多),希望这会帮助你.example-color::selection {&nbsp; color: #8e44ad;}.example-background-color::selection {&nbsp; background-color: #f1c40f;}.example-background::selection {&nbsp; background: #e74c3c;}.example-both::selection {&nbsp; background-color: #8e44ad;&nbsp; color: white;}.example-shadow::selection {&nbsp; text-shadow: 1px 1px 0 #27ae60;}.example-input::selection {&nbsp; background: #2ecc71;}.example-textarea::selection {&nbsp; background: #34495e;&nbsp; color: white;}body {&nbsp; font-family: 'Source Sans Pro', Arial, sans-serif;&nbsp; line-height: 1.45;&nbsp; background: #E0DCCC;&nbsp; color: #333;&nbsp; padding: 1em;&nbsp; font-size: 18px;}p,input,textarea&nbsp; {&nbsp; margin-bottom: 1em;}input,textarea {&nbsp; display: block;&nbsp; font-size: 1em;&nbsp; font-family: inherit;}<p>Select me to see normal behavior.</p><p class='example-color'>Try selecting me for a different text color.</p><p class='example-background-color'>You can select me for a different background color.</p><p class='example-background'>You can also select me for a different background.</p><p class='example-both'>Guess what&hellip; you can select me for a different background color and text color.</p><p class='example-shadow'>How about a text-shadow? Sure, select me for a different text-shadow.</p><p class='example-background-color'>&nbsp; What about nest elements? Select me for a different background color.&nbsp; <span class='example-color'>And this sentence is just a color selection.</span>&nbsp; Nesting works!</p><input class='example-input' type='text' value='Inputs work!*'><textarea class='example-textarea' cols='30' name='' rows='10'>Textarea, too!*</textarea><div class='foot-notes'>*not Safari</div>

慕运维8079593

最后,经过一天的谷歌搜索,我能够实现这一目标。万一将来有人需要这个:P我所做的是 - 使包装器div与内容可编辑真实并使用document.execCommand api进行所需的自定义。注意:但是我不会让用户在下面的处理程序中使用 preventDefault 编辑内容&nbsp; &nbsp; &nbsp; &nbsp; onCut={(e)=>e.preventDefault()}&nbsp; &nbsp; &nbsp; &nbsp; onPaste={(e)=>e.preventDefault()}&nbsp; &nbsp; &nbsp; &nbsp; onKeyPress={(e)=>e.preventDefault()}&nbsp; &nbsp; &nbsp; &nbsp; onKeyDown={(e)=>e.preventDefault()}``` Thanks for helping

慕田峪4524236

你可以借助CSS,如果CSS可以处理某些事情,请不要去JS。在样式表中添加此样式::selection {&nbsp; &nbsp; color: red;&nbsp; &nbsp; background: yellow;&nbsp;}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答