快速上手¶
本教程将带你用 5 分钟完成第一个 LatticeSVG 布局。
基本流程¶
LatticeSVG 的工作流程分为三步:
- 创建
GridContainer— 定义布局容器和样式 - 添加子节点 — 使用
.add()添加文本、图片等内容 - 渲染输出 — 调用
Renderer生成 SVG 或 PNG
第一个示例¶
from latticesvg import GridContainer, TextNode, Renderer
# 步骤 1:创建页面容器
page = GridContainer(style={
"width": "600px",
"padding": "32px",
"background-color": "#ffffff",
"grid-template-columns": ["1fr"], # 单列布局
"gap": "16px",
})
# 步骤 2:添加内容
page.add(TextNode("欢迎使用 LatticeSVG", style={
"font-size": "28px",
"font-weight": "bold",
"color": "#2c3e50",
"text-align": "center",
}))
page.add(TextNode(
"LatticeSVG 是一个基于 CSS Grid 的声明式矢量布局引擎,"
"用 Python 字典描述样式,输出高质量 SVG。",
style={
"font-size": "14px",
"color": "#555555",
"line-height": "1.6",
},
))
# 步骤 3:渲染
Renderer().render(page, "my_first_layout.svg")
两列布局¶
from latticesvg import GridContainer, TextNode, Renderer
page = GridContainer(style={
"width": "600px",
"padding": "24px",
"background-color": "#f8f9fa",
"grid-template-columns": ["1fr", "1fr"], # 两列等宽
"gap": "16px",
})
page.add(TextNode("左侧内容", style={
"padding": "16px",
"background-color": "#ffffff",
"border": "1px solid #dee2e6",
"font-size": "14px",
}))
page.add(TextNode("右侧内容", style={
"padding": "16px",
"background-color": "#ffffff",
"border": "1px solid #dee2e6",
"font-size": "14px",
}))
Renderer().render(page, "two_columns.svg")
使用内置模板¶
LatticeSVG 提供 17 个内置样式模板,可以直接使用或覆盖部分属性:
from latticesvg import GridContainer, TextNode, Renderer, templates
page = GridContainer(style={
**templates.REPORT_PAGE, # 800px 宽,白色背景,单列
})
page.add(TextNode("报告标题", style={
**templates.TITLE, # 28px 加粗居中
}))
page.add(TextNode("这是一段正文内容。", style={
**templates.PARAGRAPH, # 14px,行高 1.6
}))
Renderer().render(page, "report.svg")
Grid 放置¶
使用 row、col 参数精确控制子节点在网格中的位置:
grid = GridContainer(style={
"width": "400px",
"grid-template-columns": ["1fr", "1fr", "1fr"],
"grid-template-rows": ["auto", "auto"],
"gap": "8px",
"padding": "16px",
})
# 第 1 行第 1 列,横跨 2 列
grid.add(TextNode("跨两列"), row=1, col=1, col_span=2)
# 第 1 行第 3 列
grid.add(TextNode("右上角"), row=1, col=3)
# 第 2 行,横跨全部 3 列
grid.add(TextNode("底部全宽"), row=2, col=1, col_span=3)
Renderer().render(grid, "grid_placement.svg")
输出 PNG¶
需要安装 latticesvg[png]
PNG 输出依赖 CairoSVG,请先运行 pip install latticesvg[png]。