css - 仅使用 CSS 的多色文本

标签 css

我不确定我的标题是否连贯地表达了我的问题,但我会在下面解释。

我想使用 only CSS 为文本字符串中的每个字符分配不同的颜色。

要查看我的问题的视觉图以及进一步的解释:http://codepen.io/Connor3xL/pen/ZOyzJK

我不能用这个,而且它有点耗时:

<!--I don't want this, and I cannot use it-->
<span style="font-family: tahoma">
<span style="color: red">U</span>
<span style="color: blue">s</span>
<span style="color: red">e</span>
<span style="color: blue">r</span>
<span style="color: red">n</span>
<span style="color: blue">a</span>
<span style="color: red">m</span>
<span style="color: blue">e</span>
</span>

我想要这个而且只能用这个:

<span class="username">Username</div>

其中“用户名”将由 CSS 定义。那个 CSS 正是我所需要的。这显然也与 HTML 版本具有相同的效果。

我需要它只在 CSS 中的原因是因为我在 Xenforo 用户名上使用此代码。我以前看过它,所以我知道这是很有可能的。我用谷歌搜索了大约半小时,尝试了渐变,但无法复制它。我希望有人能提供帮助。

最佳答案

这可以仅使用 CSS 来实现,但有一些注意事项:

  • 必须使用等宽字体
  • 所需的文本必须传递给 CSS

一般原则是:

  • 以所需的基色输出整个单词
  • 使用绝对定位的伪元素来输出替代颜色,这是通过指定所需的字母并为保留基色的字母使用空格来完成的

这是可行的,因为等宽字体中的字母占用相同的空间量(因此您可以确定字母将位于正确的位置)。通过使用绝对定位,字母可以放在 HTML 中的单词集之上。

.username {
  color: red;
  font-family: monospace;
  position: relative;
}
.username:after {
  color: blue;
  content: attr(data-descr);
  left: 0;
  position: absolute;
}
<div class="username" data-descr="u e n m">username</div>

JS Fiddle

关于css - 仅使用 CSS 的多色文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38166466/

相关文章:

html - 窗口调整大小导致图像向左移动

html - 网页的CSS布局?

html - 将定义列表样式化为简单的键值集

css - 为什么使用 HTML5 语义标签而不是 div?

css - 为什么 !important 在我的 CSS 中不起作用?

html - 文本位于左侧且文本居中的页脚

html - 加载器覆盖在单个 div 上

html - Tumblr 文本帖子上的图片说明

css - 图像上缩进的透明箭头/三 Angular 形

html - 让 flex child 根据 sibling 的高度成长