我正在设计一个网站,我想问你们,如何通过 CSS 更改 HTML 文本框中字符串中的一个字符的颜色?
示例:STACK OVER FLOW 只是“A”字母是红色的!
您不能使用常规<input type="text">
或<textarea>
元素来执行此操作,但使用普通元素(如<div>
or <p>
) made contenteditable
,您拥有 html/css 格式的所有自由。
<div contenteditable>
ST<span style="color: red">A</span>CK OVERFLOW
</div>
浏览器支持也很好(IE5.5+)。在https://developer.mozilla.org/en-US/docs/Web/HTML/Content_Editable阅读更多内容
如果您只想更改第一个字符的颜色,我只想添加到解决方案中,那么有一个 CSS 选择器element::first-letter
例子:
div::first-letter{
color: red;
}
我不敢相信还没有人提出这个建议。但是,如果您对仅使用 WebKit 的解决方案感到满意,您可以使用离散的分色制作颜色渐变并将其应用于文本,如下所示:
.c1 {
background: linear-gradient(to right, black 0% 1.19em, red 1.19em 1.9em, black 1.9em 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
.c2 {
color: white;
background: linear-gradient(to right, black 0% 1.19em, red 1.19em 1.9em, black 1.9em 100%);
}
input{
font-family: "Courier New", Courier;
}
.c3 {
background: linear-gradient(to right, black 0% 1.4em, red 1.2em 1.95em, black 1.95em 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
<h1 class="c1">
STACK OVER FLOW
</h1>
This is what the gradient looks like with the text over it:
<h1 class="c2">
STACK OVER FLOW
</h1>
It even works on input forms, however you'll want to change the font to a Monospaced font like Courier so the color always lines up with the same letter:
<h1>
<input type="text" class="c3"></input>
</h1>
这很好,因为它不受文本所在标签的限制,就像其他一些答案一样。如果您处于无法真正更改 html 的情况(例如,如果您在多个页面上使用相同的样式表并需要进行追溯更改),这可能会有所帮助。如果您可以更改 html,则 xec 的答案具有更好的浏览器支持。
在输入中是不可能的,但是red
如果它不在范围内,您可以仅使用 CSS 将背景颜色更改为。
输入数小于0
或大于1000
input:out-of-range {
background-color: red;
}
<input type="number" min="0" max="1000" />
你可以尝试使用
<style>
span.green{
color:green;
}
span.purple{
color:purple;
}
</style>
<spanclass="purple">Var</span> x = "<span class="green">dude</span>";
在 CSS 中,您只能更改元素属性,因此您需要在另一个元素中插入字母“A”,如下所示:
ST<span>A</span>CK OVER FLOW just the 'A' letter is red!
CSS部分是
span{
color:#FF0000;
}
或者像这样附加一个类
ST<span class="myRedA">A</span>CK OVER FLOW just the '<A' letter is red!
CSS:
span.myRedA{
color:#FF0000;
}
你可以使用粗体标签 A
CSS:
b {
font-color: red;
}
<font color="#colors">text text text</font>