樣式和 CSS
在 Web 應用程式中加入 CSS 的方式有很多種,相對應地,在 Storybook 中加入 CSS 的方式也很多種。通常,最好嘗試在 Storybook 的設定中複製應用程式的樣式。
CSS
Storybook 支援以幾種不同的方式匯入 CSS 檔案。Storybook 會將這些標籤注入到預覽 iframe 中,您的元件會在其中渲染,而不是 Storybook Manager UI。匯入 CSS 的最佳方式取決於專案的設定和您的偏好。
匯入捆綁的 CSS(推薦)
所有 Storybook 都已預先設定為識別 CSS 檔案的匯入。若要為所有 Story 新增全域 CSS,請在 .storybook/preview.ts
中匯入。這些檔案將受 HMR 約束,因此您無需重新啟動 Storybook 伺服器即可看到變更。
// 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 檔案,這也將有效。但是,如果您使用 CSS 處理器工具(如 Sass 或 Postcss),則可能需要更多設定。
包含靜態 CSS
如果您有想要包含在所有 Story 中的全域 CSS 檔案,則可以在 .storybook/preview-head.html
中匯入它。但是,這些檔案將不受 HMR 約束,因此您需要重新啟動 Storybook 伺服器才能看到變更。
<!-- 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: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 設定,因此您可以在 Story 中使用 CSS 模組,而無需任何額外設定。
如果您使用 Webpack 且想要使用 CSS 模組,則需要一些額外設定。我們建議安裝 @storybook/addon-styling-webpack
以協助您設定這些工具。
PostCSS
Vite
Vite 隨附對 PostCSS 的開箱即用支援。如果您已在 vite.config.js
中自訂 PostCSS 設定,則這也會自動套用至您的 Storybook。深入瞭解 Vite 的 PostCSS 支援。
Webpack
@storybook/nextjs
嗎?Storybook 會重新建立您的 Next.js 設定,因此您可以在 Story 中使用 PostCSS,而無需任何額外設定。
如果您使用 Webpack 且想要使用 PostCSS,則需要一些額外設定。我們建議安裝 @storybook/addon-styling-webpack
以協助您設定這些工具。
CSS 預處理器
Vite
Vite 隨附對 Sass、Less 和 Stylus 的開箱即用支援。深入瞭解 Vite 的 CSS 預處理器支援。
Webpack
@storybook/nextjs
嗎?Storybook 會重新建立您的 Next.js 設定,因此您可以在 Story 中使用 Sass,而無需任何額外設定。
如果您使用 Webpack 且想要使用 Sass 或 less,則需要一些額外設定。我們建議安裝 @storybook/addon-styling-webpack
以協助您設定這些工具。或者,如果您願意,您可以自訂 Storybook 的 webpack 設定,以包含適當的 loader。
CSS-in-JS
CSS-in-JS 程式庫旨在使用基本 JavaScript,它們通常可以在 Storybook 中運作,而無需任何額外設定。某些程式庫期望元件在特定的渲染「情境」中渲染(例如,提供主題),這可以使用 @storybook/addon-themes
的 withThemeFromJSXProvider
裝飾器來完成。
新增網頁字型
.storybook/preview-head.html
如果您需要網頁字型可用,則可能需要在 .storybook/preview-head.html
檔案中新增一些程式碼。如果可以,我們建議將任何資源包含在您的 Storybook 中,在這種情況下,您可能需要設定靜態檔案位置。
.storybook/preview.ts
如果您使用類似 fontsource
的工具來處理字型,則可以在 .storybook/preview.ts
檔案中匯入所需的 CSS 檔案。