文档
Storybook Docs

样式和 CSS

在 Web 应用程序中包含 CSS 有许多方法,同样,在 Storybook 中包含 CSS 也有许多方法。通常,最好尝试在 Storybook 的配置中复制您的应用程序在样式方面的做法。

CSS

Storybook 支持以几种不同的方式导入 CSS 文件。Storybook 会将这些标签注入到您的组件渲染的预览 iframe 中,而不是 Storybook Manager UI。导入 CSS 的最佳方式取决于您项目的配置和您的偏好。

所有 Storybook 都已预先配置,可识别 CSS 文件的导入。要为所有 story 添加全局 CSS,请在 .storybook/preview.ts 中导入它。这些文件将支持 HMR,因此您无需重启 Storybook 服务器即可看到更改。

.storybook/preview.ts
// Replace your-framework with the framework you are using, e.g. react-vite, nextjs, vue3-vite, etc.
import type { Preview } from '@storybook/your-framework';
 
import '../src/styles/global.css';
 
const preview: Preview = {
  parameters: {},
};
 
export default preview;

如果您的组件文件导入了它们的 CSS 文件,这也会起作用。但是,如果您使用 Sass 或 Postcss 等 CSS 处理器工具,您可能需要更多配置。

包含静态 CSS

如果您有一个想要包含在所有 story 中的全局 CSS 文件,您可以将其导入到 .storybook/preview-head.html 文件中。但是,这些文件将不支持 HMR,因此您需要重启 Storybook 服务器才能看到您的更改。

.storybook/preview-head.html
<!-- Loads a font from a CDN -->
<link rel="preconnect" href="https://fonts.googleapis.ac.cn" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
  href="https://fonts.googleapis.ac.cn/css2?family=Inter:wght@100..900&display=swap"
  rel="stylesheet"
/>
<!-- Load your CSS file -->
<link rel="stylesheet" href="path/to/your/styles.css" />

CSS 模块

Vite

Vite 开箱即用支持 CSS 模块。如果您在 vite.config.js 中自定义了 CSS 模块配置,它也将自动应用于您的 Storybook。阅读更多关于 Vite 的 CSS 模块支持

Webpack

正在使用 @storybook/nextjs

Storybook 会重新创建您的 Next.js 配置,因此您可以在 Storybook 中使用 CSS 模块,无需任何额外配置。

如果您正在使用 Webpack 并想使用 CSS 模块,您需要进行一些额外的配置。我们建议安装 @storybook/addon-styling-webpack 来帮助您配置这些工具。

PostCSS

Vite

Vite 开箱即用支持 PostCSS。如果您在 vite.config.js 中自定义了 PostCSS 配置,它也将自动应用于您的 Storybook。阅读更多关于 Vite 的 PostCSS 支持

Webpack

正在使用 @storybook/nextjs

Storybook 会重新创建您的 Next.js 配置,因此您可以在 Storybook 中使用 PostCSS,无需任何额外配置。

如果您正在使用 Webpack 并想使用 PostCSS,您需要进行一些额外的配置。我们建议安装 @storybook/addon-styling-webpack 来帮助您配置这些工具。

CSS 预处理器

Vite

Vite 开箱即用支持 Sass、Less 和 Stylus。阅读更多关于 Vite 的 CSS 预处理器支持

Webpack

正在使用 @storybook/nextjs

Storybook 会重新创建您的 Next.js 配置,因此您可以在 Storybook 中使用 Sass,无需任何额外配置。

如果您正在使用 Webpack 并想使用 Sass 或 Less,您需要进行一些额外的配置。我们建议安装 @storybook/addon-styling-webpack 来帮助您配置这些工具。或者,如果您愿意,您可以自己自定义 Storybook 的 Webpack 配置 来包含适当的加载器。

CSS-in-JS

CSS-in-JS 库旨在利用基本的 JavaScript,并且通常在 Storybook 中无需任何额外配置即可使用。有些库期望组件在特定的渲染“上下文”中渲染(例如,提供主题),这可以通过 @storybook/addon-themeswithThemeFromJSXProvider 装饰器 来实现。

添加 Web 字体

.storybook/preview-head.html

如果您需要 Web 字体可用,您可能需要向 .storybook/preview-head.html 文件添加一些代码。我们建议尽可能将所有资源与您的 Storybook 一起包含,在这种情况下,您可能需要配置 静态文件位置

.storybook/preview.ts

如果您使用的是 fontsource 之类的工具来处理字体,您可以在 .storybook/preview.ts 文件中导入所需的 CSS 文件。