EN
Shopify 知识库 · 指南

Horizon 样式机制:全局变量、实例配置与组件 CSS

基于 Horizon 4.2.0 源码,沿全局颜色变量、实例间距与尺寸片段和组件 CSS,追踪 Shopify 主题外观设置怎样生效及共享片段的修改范围。
历史资料
请结合文中的适用版本和来源阅读。

本文基于 Horizon 4.2.0,源码固定到 5acd1b6(核验于 2026-10-07)。结论限于此 commit,不表示其他版本行为相同;本篇为源码分析,未完成店铺运行验证。

Horizon 的外观配置需要沿三个位置阅读:全局变量、按实例输出的样式值、消费这些值的组件 CSS。只抄一段类名或一张设置表,很难说明最终为什么呈现为这个尺寸与颜色。

全局与局部颜色分别在哪里

layout/theme.liquid 加载 snippets/theme-styles-variables.liquid 和 snippets/color-palette.liquid。后者从调色板与相关设置输出颜色变量;部分 Section 还调用 snippets/contrast-override.liquid 处理局部覆盖。

这个基线的全局颜色设置使用 color_palette 类型,config/settings_schema.json 中没有 color_scheme 设置,因此不能把以配色方案(color schemes)为中心的读法直接套进来。核对颜色时应从实际布局调用出发,再追踪到组件使用处,而不是假定同名设置在两个版本间完全等价。

实例设置怎样成为样式值

snippets/spacing-style.liquid 将传入设置转换成 padding 变量,并在满足条件时应用缩放。虽然文件说明提到 padding 和 margin,本基线的键列表只处理 padding;说明文字不能代替实现。

snippets/size-style.liquid 则处理宽高及移动端尺寸。两者常由调用方放进 style 属性,接着由 snippets/group.liquid 等组件的样式消费。全局样式继续看 assets/base.css。

这条链的核对顺序是:哪个 schema 定义设置,哪个实例保存值,哪个片段输出变量,哪条 CSS 最终使用。缺少任一步,都不能仅凭“设置存在”判断功能已经接通。

共享片段的修改范围

改共享的间距或尺寸片段会影响多个调用方。定制某个模块前,先确认需要改变的是它自己的组合、实例配置还是全局规则。只服务一个位置的调整,没有必要扩散到所有商品卡和页脚组件。

表格中的默认值、阈值与可见条件请直接查固定源码;本篇不维护一份平行的参数手册。

验证时同时检查配置与计算样式

选择一个真实组件,记录编辑器设置、生成的内联变量和浏览器计算样式,再切换桌面与小屏。颜色还需检查文字、按钮、悬停和焦点状态。本篇未执行编辑器或对比度实测,不能据此宣称所有配色都合格。

源码基线