【问题标题】:Color gradient for each line/character每行/字符的颜色渐变
【发布时间】:2021-12-20 23:10:20
【问题描述】:

我想在不使用 Javascript 的情况下使我的字体具有垂直颜色渐变,例如 this one

要应用的文本:

<p>
  aaaaaaaaaaaaaaaa<br>
  bbbbbbbbbbbbbbbb<br>
  cccccccccccccccc<br>
</p>

经过一番研究,我有:

[data-component="text-box"] p {
    font-size:20px;
    font-weight:700;
    background-image:-webkit-linear-gradient(bottom,#9E9F9E,#ffffff);
    -webkit-background-clip:text;
    -webkit-text-fill-color:transparent;
}

但是,当我在&lt;p&gt; 上应用样式时,颜色渐变效果将应用于整个段落,而不是单个字符/行。 (screenshot)

有没有办法让它应用于单个字符/行,每个都有垂直颜色渐变? (example)


编辑:应用在单个字符或单行上都可以,因为我想要垂直渐变。字符/线条的垂直渐变是相同的。

【问题讨论】:

  • 您想将渐变分配给每个字符的背景,还是使用字符本身的渐变
  • @Raptor Gradient 在角色本身上,每个角色都是黑色->从上到下的白色

标签: css linear-gradients


【解决方案1】:

这里是你想要的效果的解决方案:

HTML

<p class="text-gradient">
TaihouKai
</p>

CSS

.text-gradient {
    font-size: 20px;
    font-weight: 700;
    background-image: linear-gradient(to bottom, #9E9F9E, #ffffff);
    background-clip: text;
    -webkit-background-clip: text;
    color: transparent;
}

background-clip CSS 属性解释(来自MDN):

background-clip CSS 属性设置元素的背景是否延伸到其边框框、填充框或内容框下方。

此属性允许将背景渐变、图像或颜色“投射”到字符本身。

JS Fiddle Demo


UPDATE如果要处理多行,用换行符&lt;br /&gt;分隔,可以使用JavaScript实现:

revised JSFiddle demo

【讨论】:

  • 您愿意解释一下这是如何工作的吗?我从没想过要使用background-clip: text
  • 不幸的是,如果你在演示中添加
    来分隔多行,它仍然像我的截图一样。我正在考虑线路检测是否适用于这种情况......例如nth-child(),可能......?
  • @Ibu 在上面的答案中添加了解释。
  • @TaihouKai 如果你想让效果在同一个元素中使用多行,你将不得不使用 JS。让我做一个演示。等我一下。
  • 示例更新
【解决方案2】:

CSS 渐变文本中最重要的部分是实际的 CSS 本身。查看 CSS 的基本形式。

h1 {
  font-size: 72px;
  background: -webkit-linear-gradient(#eee, #333);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

您可以选择任何 html DOM 元素并使用颜色渐变字体。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-10-16
  • 2022-12-21
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多