@cssints/gradient-2d

中文文档
0.35.1发布于 2026/11/07MITTypeScriptES Module构建来源已验证近 30 天下载 6638

csints 的 mesh- gradient () 和 freeform- gradient () : 浏览器所在的本地函数, 或者运行时绘制的画布

中文使用文档
文档目录6 节
  1. 语法
  2. meshGradient(mesh)
  3. freeformGradient(points)
  4. 浏览器
  5. 运行时间
  6. 限制

@ cssints/ 渐变-2d

mesh-gradient() 财务报告和审定财务报表 freeform-gradient() 页:1 点缀作为样式 cssints/plugin scope()。 。 。 . 在浏览器具有CSS功能的地方,样式使用. 如果没有,则运行时间会在画布上绘制梯度 将绘图设为背景. 还没有浏览器的功能,所以今天运行时间绘制出每个梯度 第一种颜料是freeform的堆叠光圈梯度或网状平均颜色.

现状(2026-10-17). CSSWG在2026-10-14日采用网格和自由成型梯度为cs-images-5,作为解释者 (单位:千美元)css-images-5/ 解释者/2d- 梯级数) (中文(简体) ). 这不是一个语法草案:语法仍然可以改变。 自由格式可以重新命名 diffusion-gradient(),也没有 函数的渲染规则是公开的,所以这里的图画都是 此软件包的算法,而不是浏览器或 以通通论者.

import { cn, color } from "cssints" with { type: "cssints" };
import { freeformGradient, meshGradient } from "@cssints/gradient-2d" with { type: "cssints" };

export const hero = cn(meshGradient("red, blue; green, yellow"), color("white"));
export const panel = freeformGradient("red top left, gold 4 60% 40%, yellow bottom right");
@layer _.k {
  ._gradient2d-core {
    background-image: var(--gradient2d-fallback);
    background-repeat: no-repeat;
    background-size: 100% 100%;
  }
  /* only where the browser parses the function */
  @supports (background-image: mesh-gradient(red, blue; green, yellow)) {
    ._gradient2d-core {
      background-image: var(--gradient2d-native);
    }
  }
  ._gradient2d-ff {
    background-image: var(--gradient2d-ff-fallback);
    background-repeat: no-repeat;
    background-size: 100% 100%;
  }
  @supports (background-image: freeform-gradient(red top left, blue bottom right)) {
    ._gradient2d-ff {
      background-image: var(--gradient2d-ff-native);
    }
  }
}
@layer _.a {
  ._1gxhgq5 {
    --gradient2d-native: mesh-gradient(red, blue; green, yellow);
    --gradient2d-fallback: linear-gradient(#918d78, #918d78);
    --gradient2d-data: '{"space":"oklab","rows":[[[1,0,0,1],[0,0,1,1]],[[0,0.502,0,1],[1,1,0,1]]]}';
  }
  ._1ps31mi {
    --gradient2d-ff-native: freeform-gradient(red top left, gold 4 60% 40%, yellow bottom right);
    --gradient2d-ff-fallback:
      radial-gradient(circle at 0% 0%, #ff0000, transparent),
      radial-gradient(circle at 60% 40%, #ffd700, transparent),
      radial-gradient(circle at 100% 100%, #ffff00, transparent);
    --gradient2d-ff-data: '{"space":"oklab","points":[[0,0,1,[1,0,0,1]],[0.6,0.4,4,[1,0.8431,0,1]],[1,1,1,[1,1,0,1]]]}';
  }
}

原生值是 spec 的文本,按所写. 数据是作为 sRGB 数字的站点或点,用于运行时间. 网络 倒回是它的站点的平均颜色,在oklab中;freeform's是一个光圈层每点.

语法

meshGradient(mesh)

  • meshGradient(mesh),一个字符串: 站行,行相隔 ; 从盒子顶上往下, 停下来 , 从左边。 站为颜色 : red, (中文(简体) ), #888, (中文(简体) ), oklch(...),或 var(--token)。 。 。 .
  • in oklab 或者说 in srgb 可能打开文本, 如规格所示: meshGradient("in oklab, red, blue; green, yellow")。 。 。 . 之后的颜色( A)in oklab red, ...)是网格外的颜色. 检查并保持原生价值,但 从未绘制 : 网格覆盖整个框 .
  • 构建错误,在调用时:长度不同的行,少于2行的2站,这种颜色不解析, 另一种颜色的空间 比oklab或srgb, 和一个站台的位置, by 或者说 with。 。 。 .
  • 尚未支持 : 职位(red 0% 0%控制点(by, (中文(简体) ), with) (中文(简体) ). 网格是固定的:角 坐在盒子的角落 其他站点的间隔均匀 位置需要网格扭曲 运行时间还没有完成 。 两者都是构建错误,而不是忽略.
  • var(--token) 停下来 工作时 浏览器解决了它们: 绘图等待运行时间, 而第一个油漆没有 倒计时( e)--gradient2d-fallback: none) (中文(简体) ).

freeformGradient(points)

  • freeformGradient(points),一个字符串:由 ,,每个 <color> <number>? <position>数字是 重点 传播以物配主, 位置是关键词 (单位:千美元)top left, (中文(简体) ), bottom right, (中文(简体) ), center)或一个或两个百分比,如: background-position 读出来 (单位:千美元)gold 4 60% 40%, (中文(简体) ), blue right 10% 百分之九十跨度).
  • in oklab 或者说 in srgb 可能打开文本, 如规格所示: freeformGradient("in srgb, red 20% 30%, blue")。 。 。 . 该函数在点外没有颜色,因此方法后的一个颜色是构建错误.
  • 构建错误,在调用时:一个没有位置的点,不到2分,两个点在同一位置(他们 重量都是无限的,一种不解析的颜色,一个长度(10px 框),行(与 多个位置,spec的未来工作)和外形.
  • 尚未支持 : 线条、形状和长度,如上。 A 类 var(--token) 点工作:浏览器解决了它, 在 倒计时.

浏览器

  • 土著: 任何浏览器中都没有任何功能. 已安装的 Chrome 中 test:browser 报告没有支持,所以 运行时间绘图 。 这个 @supports 测试是光谱最简单的例子: mesh-gradient(red, blue; green, yellow) 财务报告和审定财务报表 freeform-gradient(red top left, blue bottom right)。两者是分开决定的,所以一个有网点的浏览器,没有 freeform 只取网状树枝(_gradient2d-ff 这是它自己的一个阶级.
  • 运行时间 位于每个浏览器列表目标包括BCD跟踪的浏览器的构建中. 表格在 @cssints/css-grammar 说每个这样的浏览器都缺少 css.types.gradient.mesh-gradient 财务报告和审定财务报表 css.types.gradient.freeform-gradient (碱性催化分解没有条目。) 当BCD或表格有一个带有其中之一的浏览器时 他们,运行时间的舰只 到没有它的目标.
  • 运行时间需求 ResizeObserver,画布和 MutationObserver (如果页面有, 绘图工作).

运行时间

  • 算法是这个包的,不是光谱,也不是Illustrator的. 网格是一个双子体(Catmull-Rom),穿过 4 × 4 相接点; 光谱插出一个有 Bézier 控制点的 收发器补丁, 此套件 没有模型。 自由格式为 反相相加权:一个点的颜色是站点的加权平均值, 车站的重量 spread / d²{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}在奥克莱布 光谱暗示了Delaunay三角形;freeform的渲染规则是 不公开(Josh Tumath, 2026-06-25),所以还没有浏览器或编辑同意. IDW被选在Delaunay上是因为 盒子的每个像素都有重量: 三角形只画出点状凸起的船体,留下其余部分 未定义的框(插入 docs/research/2d-gradients.md 正好看到了硬壳的边缘 这包是自己的 读取IDW渲染为柔软圆形blobs,一站一站,可分辨出传播. 画是近亲 显示浏览器的平面,而不是相同的表面。 以眼相较.
  • 决议. 画布是盒子的四分之一(至少64px),浏览器将画布伸到盒子上. 一个大盒子 是柔软的,不是尖锐的。 在Chrome(安装的1,1000×600,6个缩放在800-1000px之间的中位数),帆布 250×150,新背景的时间,布局和PNG编码包括: 网格重绘为49ms,freeform in 34分钟。 自由形的相距在盒子的像素(高度/宽度)中被测量出,如同倒回的光圈层是, 所以一点的影响是屏幕上的一圈而不是椭圆.
  • 尺寸. 3.9 kB 精密化,1.9 kB gziped for both rules(用滚倒的精密度测量 dist/runtime.mjs 联 合 国 vp pack 没有修改)。 单网格为 2.9 kB / 1.6 kB,与加入freeform 之前一样; @cssints/balance是因为 脚本为552字节.
  • 数据与征兆. 运行时间读 --gradient2d-data 或者说 --gradient2d-ff-data (JSON在CSS字符串中). A 类 var() stop通过元素的隐藏子读取,从而继承元素的自定义属性,以及1×1画布 将计算出的颜色转换为 SRGB .
  • 雷德劳. 在大小变化时,当一个元素得到标记类时(加入到页面中或稍后给予该类). 两种规则都有一个 ResizeObserver 和一个 MutationObserver (src/canvas.ts) (英语). 新画时已经过时 一个完成被放弃。 前一个 blob URL 已被取消 .
  • 第一次涂料没有JS. Freeform的倒背是一叠光圈梯度,每点一层:它的颜色在 指向盒子最远一角的透明 它与自己的混合物(α,在 浏览器的空间, 不 spread / d² 在木板里,没有铺垫 var() 点,网点的 平均颜色不能.
  • CSP. (中文(简体) ). 后退是一个 blob: URL (中文(简体) ). 页面需要 img-src blob: (或 img-src 与 blob: 用来画画.
  • 苏维埃社会主义共和国. 跑步时间没有结果 document. 第一种涂料是内核倒置.

限制

  • Freeform的倒置及其画作不同意像素的像素. 光线梯度的堆叠是一个低可靠性 首先涂料,而不是IDW规则:其混合在相距和浏览器的色彩空间中是线性的.
  • 一个条件可以改变数据,运行时间在平分时读取. hover(meshGradient(...)) 输入数据 下级 :hover (已选中: 引擎打印它; 绘图在悬浮时不会改变, 只在下一个调整大小时才会改变 .
  • 从页面上移除的元素保留了它的观察者和其blob URL 直到页面卸下。 页面罚款,不 用于一个长一页的应用软件,该应用将显示梯度;一个固定将观测清除.
  • 打印 带光栅后退。 浏览器freeform的 PDF 是补丁阴影,不是位图,freeform是 大型在 PDF 中.
  • 语法可以改变 直到光谱草稿, 和freeform的名字与它(diffusion-gradient()); 构建错误 信件指定他们拒绝的部分.
cd packages/gradient-2d && bun run test           # the maths in Node, the engine (kernels, data, errors, the runtime by targets)
cd packages/gradient-2d && bun run typecheck      # and the type tests
cd packages/gradient-2d && bun run test:browser   # Chrome (installed): both first paints, the pixels against the maths, resize, an added element

版本与发布记录

@cssints/gradient-2d 共发布 38 个版本,首次发布于 2026/10/21;过去 12 个月发布了 38 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.35.1latest2026/11/073 天前
0.35.02026/11/073 天前
0.34.02026/11/073 天前
0.33.02026/11/046 天前
0.32.02026/11/046 天前
0.31.02026/11/047 天前

关于 @cssints/gradient-2d 的常见问题

@cssints/gradient-2d 是什么?

csints 的 mesh- gradient () 和 freeform- gradient () : 浏览器所在的本地函数, 或者运行时绘制的画布

如何安装 @cssints/gradient-2d?

在项目目录运行 npm install @cssints/gradient-2d,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:cssints(^0.35.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@cssints/gradient-2d 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@cssints/gradient-2d 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@cssints/gradient-2d 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@cssints/gradient-2d 可以商用吗?

@cssints/gradient-2d 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@cssints/gradient-2d 的下载量有多少?

根据 npm 官方下载统计,@cssints/gradient-2d 在 2026/10/11 – 2026/11/09 这 30 天内被下载 6,638 次,日均约 221 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@cssints/gradient-2d 还在维护吗?

最新版本 0.35.1 发布于 2026/11/07(3 天前);至今共发布 38 个版本,其中过去 12 个月发布了 38 个;首次发布于 2026/10/21。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。