You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除Storybook默认样式?Vue+Buefy项目中关闭Canvas默认字体样式的方法

如何移除Storybook中的默认样式(解决Canvas默认字体覆盖问题)

我之前在Vue+Buefy项目里也碰到过一模一样的问题——Storybook的默认Nunito Sans字体通过元素类强制覆盖了应用里的字体,连Buefy的组件样式都被打乱了。下面是我亲测有效的几种解决方法,按从彻底到针对性的顺序来:

方法一:彻底禁用Storybook的默认样式预设

Storybook的默认样式(包括Canvas的字体、重置样式等)是通过官方预设加载的,我们可以直接在配置里关掉它:

  1. 打开你的.storybook/main.js(或main.ts)配置文件
  2. 修改addons数组,调整包含默认样式的预设,同时添加自定义配置:
module.exports = {
  stories: ['../src/**/*.stories.mdx', '../src/**/*.stories.@(js|jsx|ts|tsx)'],
  addons: [
    // 调整@storybook/addon-docs配置,禁用默认样式注入
    {
      name: '@storybook/addon-docs',
      options: {
        configureJSX: true,
        sourceLoaderOptions: {
          injectStoryParameters: false, // 关键:关闭默认样式注入
        },
        transcludeMarkdown: true,
      },
    },
    // 保留你需要的其他addons
    '@storybook/addon-actions',
    '@storybook/addon-controls',
  ],
};

方法二:自定义全局样式强制覆盖默认字体

如果你不想彻底禁用所有默认样式,只是想解决字体被覆盖的问题,可以在Storybook的预览配置里加载自己的全局样式,把优先级提上去:

  1. 在.storybook目录下创建preview.css文件,写入以下内容:
/* 覆盖Storybook Canvas核心容器的字体 */
#root, .sb-show-main, .sb-main-padded {
  font-family: "你的应用字体", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif !important;
}

/* 确保Buefy组件继承应用字体,避免被覆盖 */
.b-button, .b-card, .b-text, .b-modal-content {
  font-family: inherit !important;
}
  1. 打开.storybook/preview.js(或preview.ts),导入这个样式文件并完成Buefy的初始化:
import './preview.css';
import { setup } from '@storybook/vue3'; // Vue2项目用@storybook/vue
import Buefy from 'buefy';
import 'buefy/dist/buefy.css';

setup((app) => {
  app.use(Buefy);
});

export const parameters = {
  actions: { argTypesRegex: "^on[A-Z].*" },
  controls: {
    matchers: {
      color: /(background|color)$/i,
      date: /Date$/,
    },
  },
};

方法三:调整Storybook参数,隔离组件样式

还有一种更精细的方法,就是让Storybook的Canvas容器不应用默认样式类,通过修改预览参数实现:

在.storybook/preview.js里添加:

export const parameters = {
  // 关键:设置为fullscreen模式,去掉默认的.sb-main-padded类
  layout: 'fullscreen',
  docs: {
    // 同时关闭文档页的默认字体样式
    container: {
      styles: {
        fontFamily: 'inherit',
      },
    },
  },
};

设置layout: 'fullscreen'会让组件直接占满Canvas,避免默认类带来的字体覆盖问题。


内容的提问来源于stack exchange,提问作者user1037355

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 08:47:41