文本区域或文本输入中的多色文本突出显示

IT技术 javascript html css
2021-02-23 00:17:49

我想在 textarea 中设置文本或使用不同颜色的文本输入(一种或另一种都可以,我不需要两者)。想想像简单的语法高亮这样的东西。所以,假设我定义了一些关键字。当用户在 textarea 或文本输入中键入时,我希望这些单词被着色为不同的颜色

我知道这需要 CSS、Javascript 和一些小精灵的某种组合。我想知道我需要深入研究哪个方向来找出如何做到这一点。

谢谢

3个回答

不,您不能在 textarea 或文本输入中执行此操作。任何与 CSS 文本相关的属性都会影响 textarea/input 中的整个文本。您需要一个可编辑的元素或文档来实现语法高亮显示。示例(适用于所有最近的浏览器;最后一个不支持的主要浏览器contenteditable是 Firefox 2.0):

<code contenteditable="true">
  <span style="color: blue">var</span> foo = <span style="color: green">"bar"</span>;
</code>

@TimDown 有趣,只是从代码中没有注意到,感谢提供链接
2021-04-30 00:17:49
@MysteryPancake:除了各个元素的默认样式属性外,没有显着差异(例如<code>,默认情况下是内联,<div>是块,<code>默认是等宽字体,<div>不是)。
2021-05-04 00:17:49
您的回答并非 100% 正确。可以使用 javascript 更改 textarea 属性,就像codemMirror那样。查看他们的示例代码,了解他们是如何做到的
2021-05-07 00:17:49
这是非常有趣的。我不知道存在这样的元素。
2021-05-10 00:17:49
@user1951751:不,CodeMirror 中的主要编辑区域不是文本区域。您可以在此处阅读更多相关信息:marijnhaverbeke.nl/blog/browser-input-reading.html诚然,我的回答没有提到 CodeMirror 方法(编辑器的常规 div 和 pre 元素、假插入符号、用户输入的隐藏文本区域)。
2021-05-10 00:17:49

你在找这个吗?

使用 jQuery.colorfy

代码:https : //github.com/cheunghy/jquery.colorfy

演示:http : //cheunghy.github.io/jquery.colorfy/

截屏视频:https : //www.youtube.com/watch?v= b1Lu_qKrLZ0

这不再维护,使用这个:lonekorean.github.io/highlight-within-textarea
2021-04-21 00:17:49

这实际上可以通过在标签内使用样式来完成,这是我完成此操作的网站之一的参考

<input style="border-radius: 5px; background-color: #000000; color: #ff0000; border-color:
 blue;" class="form-control" name="firstname" placeholder="What you were looking for?"
 type="text"
 required autofocus />
这不满足提问者的条件:“我希望在用户输入文本区域或文本输入时将这些单词涂成不同的颜色
2021-04-21 00:17:49