文档
Storybook 文档

样式和 CSS

在 Web 应用中包含 CSS 的方法有很多,相应地,在 Storybook 中包含 CSS 的方法也很多。通常,最好尝试在 Storybook 的配置中复制应用在样式方面的做法。

CSS

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

所有 Storybook 都预先配置为识别 CSS 文件的导入。要为所有故事添加全局 CSS,请在 .storybook/preview.ts 中导入它。这些文件将受 HMR 影响,因此你可以看到你的更改,而无需重启 Storybook 服务器。

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

如果你的组件文件导入它们的 CSS 文件,这也将有效。但是,如果你正在使用 Sass 或 Postcss 等 CSS 预处理器工具,你可能需要更多配置。

包含静态 CSS

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

{/* .storybook/preview-head.html */}
 
{/* Loads a font from a CDN */}
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
  href="https://fonts.googleapis.com/css2?family=Inter:[email protected]&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 配置,因此你可以在故事中使用 CSS 模块,而无需任何额外配置。

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

PostCSS

Vite

Vite 默认支持 PostCSS。如果您在 vite.config.js 中自定义了 PostCSS 配置,它也会自动应用到您的 Storybook 中。了解更多关于 Vite 的 PostCSS 支持

Webpack

正在使用 @storybook/nextjs 吗?

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

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

CSS 预处理器

Vite

Vite 默认支持 Sass、Less 和 Stylus。了解更多关于 Vite 的 CSS 预处理器支持

Webpack

正在使用 @storybook/nextjs 吗?

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

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

CSS-in-JS

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

添加网页字体

.storybook/preview-head.html

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

.storybook/preview.ts

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