社区新闻

为主题使用盒阴影功能

查看官方原文 ↗ 发布于

Gutenberg 14.9 于 2023 年 1 月 4 日发布,此版本包含了一个主题作者期待已久的设计工具:阴影。该功能的第一个迭代版本最终将随 WordPress 6.2 发布,允许设计者创建一组自定义阴影以应用于区块和支持的元素。

目前,盒阴影组件UI 工具仍在开发中,因此用户尚无法通过 WordPress 管理后台选择或自定义阴影。这意味着在相关功能完善之前,这暂时是一个仅限代码的功能。不过,主题作者可以开始通过 theme.json 测试和应用阴影。

阴影功能的工作方式类似于主题作者可以定义的其他预设。注册后,它们会成为自定义 CSS 属性并内联到网站的 <head> 中。阴影的属性命名也遵循与其他预设相同的方案:--wp--preset--shadow--{$slug}

注册自定义阴影

你可以通过 theme.json 中的 settings.shadow.presets 数组添加自定义阴影(注意:在早于 15.1 版本的 Gutenberg 插件中,presets 曾命名为 palette)。数组中的每个项目必须是一个包含以下属性的对象:

  • name: 阴影的可读名称
  • slug: 用于引用阴影的唯一别名
  • shadow: box-shadow 属性的有效 CSS 值

现在,尝试在你的 theme.json 文件中添加一些自定义阴影,如下面的代码片段所示:

{
	"version": 2,
	"settings": {
		"shadow": {
			"presets": [
				{
					"name": "Small",
					"slug": "sm",
					"shadow": "0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06)"
				},
				{
					"name": "Medium",
					"slug": "md",
					"shadow": "0 4px  10px 0 rgba( 0, 0, 0, 0.3 )"
				},
				{
					"name": "Large",
					"slug": "lg",
					"shadow": "0 8px  15px 0 rgba( 0, 0, 0, 0.3 )"
				}
			]
		}
	}
}

上面的代码添加了三种不同的阴影:

  • Small
  • Medium
  • Large

下面的截图展示了如何将这些阴影应用到图像区块:

WordPress 文章编辑器,包含三张显示一组 WordPress 按钮的图片。每张图片都有一个浅灰色阴影,阴影大小依次递增。

现在,选择你想要应用默认阴影的区块或元素。然后,选择你要使用的自定义阴影之一。

下面的代码示例,将“Large”阴影大小添加到图像区块:

{
    "version": 2,
    "styles": {
        "blocks": {
            "core/image": {
                "shadow": "var( --wp--preset--shadow--lg )"
            }
        }
    }
}

保存后,网站上的所有图像区块都应显示此阴影,如下图所示:

WordPress 文章编辑器,包含一个显示挂绳的图像区块。该图像周围有一个大的浅灰色阴影。

请记住,用户目前还不能在区块或全局级别覆盖这些设置,至少不能通过 UI 界面。不过,他们将来应该能够做到这一点。

使用核心阴影

默认情况下,Gutenberg 插件目前添加了两个自定义阴影,其别名分别为 naturalsharp。主题作者也可以通过 theme.json 使用这些阴影来设置区块样式,即使他们没有注册自己的阴影。

以下代码示例展示了如何在图像区块上使用 natural 阴影:

{
    "version": 2,
    "styles": {
        "blocks": {
            "core/image": {
                "shadow": "var( --wp--preset--shadow--natural )"
            }
        }
    }
}

注意: 核心阴影在正式添加到 WordPress 6.2 之前可能会发生变化。

将调色板与阴影集成

随着 theme.json 功能日益强大,主题作者也更容易将一组设计工具与另一组结合使用。通常,使用通过 settings.color.presets 定义的颜色作为阴影颜色是合理的。主题作者可以通过 --wp--preset--color--{$slug} 变量引用这些颜色。

为此,定义一个自定义的“primary”颜色(或选择你喜欢的名称)。然后,在 theme.json 中通过自定义阴影引用它。

以下代码示例创建了一个纯色阴影并将其添加到图像区块:

{
    "version": 2,
    "settings": {
        "color": {
            "palette": [
                {
                    "name": "Primary",
                    "slug": "primary",
                    "color": "#0693e3"
                }
            ]
        },
        "shadow": {
            "presets": [
                {
                    "name": "Primary",
                    "slug": "primary",
                    "shadow": "16px 16px var( --wp--preset--color--primary )"
                }
            ]
        }
    },
    "styles": {
        "blocks": {
            "core/image": {
                "shadow": "var( --wp--preset--shadow--primary )"
            }
        }
    }
}

图像区块及其阴影应如下图所示:

WordPress 文章编辑器,包含一个显示按钮的图像区块。该图像的右下角有一个纯蓝色的投影。

总的来说,阴影预设应该能让主题作者通过使用 WordPress 内置的设计工具,进一步减少其样式表的大小。