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

Vuetify + Nuxt 项目如何覆盖默认标题标签字体?

第一步:校验nuxt.config配置

必须开启treeShake并正确指定自定义变量文件路径,否则自定义Sass变量不会被Vuetify加载:

// nuxt.config.js / nuxt.config.ts
export default defineNuxtConfig({
  modules: ['@nuxtjs/vuetify'],
  vuetify: {
    treeShake: true,
    customVariables: ['~/assets/variables.scss']
  }
})

第二步:调整variables.scss的变量声明逻辑

你之前的写法直接重写了整个$headings映射,丢失了Vuetify默认的其它标题属性,会导致编译时回退到默认字体配置。需要用深度合并的方式覆盖指定字段,调整后的代码如下:

// 先导入自定义字体
@import '@fontsource/ledger/latin.css';
@import '@fontsource/raleway/latin.css';

// 基础字体变量定义
$font-size-root: 16px;
$body-font-family: Raleway, Helvetica, sans-serif;
$heading-font-family: Ledger, serif; // 替换为你实际要使用的标题字体名

// 先导入Vuetify默认变量,拿到原生$headings映射
@import '~vuetify/src/styles/settings/_variables.scss';

// 深度合并自定义配置到默认$headings,不影响其它默认属性
$headings: map.deep-merge($headings, (
  'h1': (
    'font-family': $heading-font-family,
  ),
  'h2': (
    'font-family': $heading-font-family,
  ),
  'h3': (
    'font-family': $heading-font-family,
  ),
  'h4': (
    'font-family': $heading-font-family,
  ),
  'h5': (
    'font-family': $heading-font-family,
  ),
  'h6': (
    'font-family': $heading-font-family,
  ),
));

// 最后导入Vuetify主样式
@import '~vuetify/src/styles/styles.sass';

第三步:清理缓存重启服务

Nuxt的Sass编译缓存经常会导致变量修改不生效,操作以下步骤后重启开发服务即可:

  • 删除项目根目录下的.nuxt文件夹
  • 删除node_modules/.cache文件夹
  • 重新执行npm run dev启动项目

如果是Vuetify 3 + Nuxt 3环境,变量导入逻辑略有调整,直接用@use规则传入配置即可:

@use 'vuetify' with (
  $body-font-family: Raleway, Helvetica, sans-serif,
  $headings: (
    h1: (font-family: 'Ledger', serif),
    h2: (font-family: 'Ledger', serif)
  )
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 16:45:02