绘制艺术标题需先配置 ctx.font 设置字体样式,再用 ctx.textAlign 和 ctx.textBaseline 定义对齐方式,结合线性渐变、阴影、描边及字体加载保障提升视觉表现力。

设置字体与文本定位参数
绘制艺术标题前,先配置好字体大小、粗细和字体族。用 ctx.font 指定样式,例如 "bold 48px 'Helvetica Neue', sans-serif"。注意必须在调用绘制方法前设置,否则无效。
对齐方式影响排版重心:ctx.textAlign 控制水平对齐(left、center、right),ctx.textBaseline 控制垂直基准线(常用 middle 或 alphabetic)。居中标题推荐组合:
ctx.textAlign = 'center'ctx.textBaseline = 'middle'- 绘制坐标设为
(canvas.width / 2, canvas.height / 2)
创建并应用线性渐变填充
艺术标题的核心是视觉张力,线性渐变最常用。调用 ctx.createLinearGradient(x0, y0, x1, y1) 定义方向——起点与终点坐标决定色彩流动路径。
例如横向渐变从左到右,可设为 (0, y, canvas.width, y);若希望渐变紧贴文字区域,更精准的做法是基于文字实际宽高计算:
立即学习“前端免费学习笔记(深入)”;
把任意文章或文档内容转换成精美的全屏翻页 HTML 演示文件(幻灯片风格)。当用户发来一篇文章、文档链接、Markdown 内容、或粘贴的文本,并且希望生成演示用的 HTML 时触发。支持任意内容来源:iWiki 链接、KM 链接、本地文件路径、直接粘贴的文本。生成的 HTML 文件保存到本地工作区,并通过企微直接发送给用户。触发词示例:帮我把这篇文章做成PPT、转成演示文档、生成HTML幻灯片、做个演示、转成可以演示的格式、article to deck、make a slide。
- 先用
ctx.measureText(text)获取宽度textWidth - 设文字起始点为
(x, y),则渐变区间可取(x, y - 10, x + textWidth, y + 10) - 再用
addColorStop(0, '#ff6b6b')和addColorStop(1, '#4ecdc4')添加两端色值
最后将渐变对象赋给 ctx.fillStyle,再调用 fillText() 渲染。
增强表现力的辅助效果
单靠渐变还不够“艺术”,可叠加以下效果提升层次感:
-
阴影:启用
ctx.shadowColor = 'rgba(0,0,0,0.3)'、shadowBlur = 8、shadowOffsetX/Y = 2,让文字浮出画布 -
描边+填充混合:先用
strokeText()绘制细边框(设lineWidth = 1.5和strokeStyle),再用fillText()填充渐变,形成立体轮廓 -
微倾斜或缩放:用
ctx.save()→ctx.translate()→ctx.rotate(0.05)→ 绘制 →ctx.restore()实现轻微动态感
处理自定义字体与加载保障
使用 Web 字体(如 Google Fonts)时,Canvas 不会自动等待字体加载完成。若直接绘制,可能回退到默认字体,导致排版错乱。
稳妥做法是监听字体加载:
- 引入
FontFaceAPI 或使用document.fonts.load("48px 'Inter'") - 在
.then()回调中执行绘制逻辑 - 或设置兜底机制:检测
ctx.measureText('测试').width是否明显偏小,判断是否加载成功
确保艺术标题在不同设备上呈现一致,字体加载完成后再渲染是关键一步。


















