You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解析:这段CSS代码如何为每行文本应用不同水平双色渐变?

解析:如何为每行文本实现不同的水平颜色渐变

嘿,这个实现的思路真的很有意思,我来一步步拆解它的工作原理:

1. 核心文字“染色”技术

首先,这两行CSS是实现文字渐变的基础:

-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
  • -webkit-text-fill-color: transparent 把文字本身的颜色设为透明,相当于给文字“挖空”;
  • -webkit-background-clip: text 让元素的背景只在文字的轮廓范围内显示,简单说就是用背景来填充文字的区域,代替原本的文字颜色。

2. 关键的背景图(Base64 编码的 PNG)

你看到的那个长长的 data:image/png,... 是一张Base64 编码的 PNG 图片,解码后它是一个非常窄(仅2像素宽)、高度为 6em 的垂直图像。这张图里预先定义了4个水平渐变的区块,每个区块高度刚好等于段落的 line-height: 1.5em:

  • 第1个区块(0~1.5em):从黑色到红色的水平渐变
  • 第2个区块(1.5em~3em):从红色到黑色的水平渐变
  • 第3个区块(3em~4.5em):从黑色到蓝色的水平渐变
  • 第4个区块(4.5em~6em):从蓝色到黑色的水平渐变

3. 背景的适配与重复

CSS 里的背景属性设置让这张图完美匹配每行文字:

background: url(...) 0 0 / 100% 6em repeat-y;
  • 100% 把背景图的宽度拉伸到和段落一样宽,这样每个水平渐变就能横跨整行文字;
  • 6em 是背景图的高度,刚好是4行文字的总高度(4×1.5em);
  • repeat-y 让这张图垂直重复排列,这样4个渐变区块就会循环出现,对应每一行文字,实现你看到的“黑→红、红→黑、黑→蓝、蓝→黑”的循环模式。

额外细节补充

  • 用 Base64 编码图片是为了把图片直接嵌入 CSS,避免额外的图片请求,让代码更紧凑;
  • 整个实现依赖 line-height 和背景图高度的精准匹配,确保每个渐变区块刚好对应一行文字;
  • 注意这是 WebKit 内核的前缀属性,所以主要在 Chrome、Safari 等浏览器生效。

内容的提问来源于stack exchange,提问作者Patrick J Fitzgerald

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:53:58