WordPress theme.json 样式属性完全指南
在 WordPress 主题开发中,theme.json 文件承担着样式管理的核心职责。它提供了一种结构化的方式,让开发者能够统一定义全局样式、区块样式以及元素样式。这份指南将带您逐一拆解所有可用的样式属性——包括边框、颜色、尺寸、滤镜、阴影、间距和排版——用直观的方式说明它们如何工作,以及如何在您的主题中有效运用。无论您是刚开始接触 WordPress 开发,还是希望更深入地掌握站点编辑器的样式系统,这篇文章都会成为一份实用的参考资料。
一、边框(Border)
边框属性允许您为元素添加四条边的轮廓线,或者单独控制某一条边。
统一设置四个边:
json
{
"version": 2,
"styles": {
"border": {
"color": "#222222",
"style": "solid",
"width": "2px"
}
}
}
这里定义了所有边框为深灰色、实线、2像素宽。
单独控制每条边:
json
{
"version": 2,
"styles": {
"border": {
"top": {
"color": "#cc0000",
"style": "solid",
"width": "3px"
},
"bottom": {
"color": "#cccccc",
"style": "dashed",
"width": "1px"
}
}
}
}
还可以单独使用 border.radius 来设置圆角:
json
{
"version": 2,
"styles": {
"border": {
"radius": "8px"
}
}
}
border-radius 也可以精细控制每个角,比如 "radius": { "topLeft": "8px", "bottomRight": "4px" }。
二、颜色(Color)
颜色属性决定文字、背景和链接的默认配色。
json
{
"version": 2,
"styles": {
"blocks": {
"core/group": {
"color": {
"text": "#1a1a1a",
"background": "#f5f5f5",
"link": "#0066cc"
}
}
}
}
}
这段代码给“组”区块设置了深灰色文字、浅灰背景,链接用了标准的蓝色。
color.link 比较特殊——它只作用于区块内部的 <a> 标签,不会影响普通文本。这在设计文章内容或导航区域时格外实用。
三、尺寸(Dimensions)
目前尺寸属性主要支持 minHeight,用来设定元素的小高度。
json
{
"version": 2,
"styles": {
"blocks": {
"core/cover": {
"dimensions": {
"minHeight": "60vh"
}
}
}
}
}
vh(视口高度单位)让封面区块的高度根据浏览器窗口大小变化。你也可以用 px、rem、% 等常见单位。
四、滤镜(Filter)
目前滤镜属性支持预设双色调(duotone)效果,通常用于图片。
json
{
"version": 2,
"styles": {
"blocks": {
"core/image": {
"filter": {
"duotone": "var(--wp--preset--duotone--blue-orange)"
}
}
}
}
}
var(--wp--preset--duotone--...) 这种写法调用了 WordPress 主题预设的双色调方案。你可以在 theme.json 的 settings 部分预先定义自己的双色调组合,然后在样式里引用。
五、阴影(Shadow)
阴影属性对应 CSS 的 box-shadow,让元素拥有立体感。
json
{
"version": 2,
"styles": {
"blocks": {
"core/heading": {
"shadow": "0 4px 8px 0 rgba(0, 0, 0, 0.12)"
}
}
}
}
五个值分别对应:水平偏移、垂直偏移、模糊半径、扩散半径和颜色。不同的数值组合能营造出浮起、凹陷或发光等视觉效果。
六、间距(Spacing)
间距属性控制元素之间的空隙、外边距和内边距。
json
{
"version": 2,
"styles": {
"spacing": {
"blockGap": "2.5rem",
"margin": {
"top": "2rem",
"bottom": "1.5rem"
},
"padding": {
"left": "2rem",
"right": "2rem"
}
}
}
}
blockGap 控制多个区块之间的垂直间距(在 CSS 中对应 margin-top 和 gap 属性)。margin 和 padding 支持 top、right、bottom、left 四个方向。
注意 blockGap 与 margin、padding 的实际表现受区块布局影响,使用前建议在具体场景中测试效果。
七、排版(Typography)
排版属性涵盖了文字外观的大部分设置。
json
{
"version": 2,
"styles": {
"blocks": {
"core/paragraph": {
"typography": {
"fontFamily": "-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",
"fontSize": "1.125rem",
"fontStyle": "normal",
"fontWeight": "400",
"letterSpacing": "0.02em",
"lineHeight": "1.75",
"textDecoration": "none",
"textTransform": "none",
"writingMode": "horizontal-tb"
}
}
}
}
}
对于 fontFamily,建议使用系统字体堆栈,这样无需加载额外字体文件,页面加载速度更快。letterSpacing 的单位 em 是相对字号变化的,比 px 更灵活。
writingMode 常用于需要竖排文字的场景,例如中文古籍风格设计或某些亚洲语言排版。
八、自定义 CSS(css)
当内置属性无法满足需求时,可以使用 css 字段写入任意 CSS 代码。
json
{
"version": 2,
"styles": {
"blocks": {
"core/gallery": {
"css": "--wp--style--gallery-gap-default: 1.25rem;"
}
}
}
}
这里的示例定义了一个自定义 CSS 变量。你还可以写完整的样式规则:
json
{
"css": ".wp-block-gallery { --custom-gap: 1.5rem; } .wp-block-gallery .blocks-gallery-item { margin: 0; }"
}
css 字段是万能钥匙,但也容易让样式散落到各处。建议优先使用结构化属性,只有在确实无法实现时才借助自定义 CSS。
总结
theme.json 的样式系统将传统的 CSS 编写方式转化为结构化配置,让样式管理更加清晰。掌握这些属性后,您可以系统性地构建主题的视觉体系——从全局基调到每个区块的细节,都能在统一的框架内完成。
实际开发中,建议先在 settings 中定义设计变量(颜色调色板、字体大小梯度、间距单位),然后在 styles 中引用这些变量。这种“变量-引用”的模式让主题后期维护和调整变得轻松许多。
样式配置需要在实际页面中反复预览验证,不同区块对同一属性的响应方式可能略有差异,灵活调整才能达到理想效果。