Nuxt3【详解】资源引用 vs 添加样式(2024最新版)

字体的引用

1.本地字体放在 public 中
2. 在 css 文件中定义 assets/css/main.css

@font-face {
  font-family: 'FarAwayGalaxy';
  src: url('/fonts/FarAwayGalaxy.woff') format('woff');
  font-weight: normal;
  font-style: normal;
  font-display: swap;
}
  1. 在页面中使用
<style>
h1 {
  font-family: 'FarAwayGalaxy', sans-serif;
}
</style>

assets 中的资源

<img src="~/assets/img/nuxt.png" alt="Discover Nuxt 3" />

public 中的资源

在 public/img/ 目录中引用一个图像文件

<img src="/img/nuxt.png" alt="Discover Nuxt 3" />

组件中导入样式

<script>
// 使用静态导入以实现服务器端兼容性
import '~/assets/css/first.css'

// 注意:动态导入不兼容服务器端
import('~/assets/css/first.css')
</script>

<style>
@import url("~/assets/css/second.css");
</style>

使用 CSS 模块

<template>
  <p :class="$style.red">This should be red</p>
</template>

<style module>
.red {
  color: red;
}
</style>

样式预处理器

如使用 SCSS、Sass、Less 或 Stylus 等

  1. 安装对应的样式预处理器
npm install sass
  1. assets 中书写样式
    如 assets/scss/main.scss
  2. 页面中导入
<style lang="scss">
@use "~/assets/scss/main.scss";
</style>

第三方的样式包

如 animate.css
3. 安装样式包

npm install animate.css
  1. 页面中导入
<script>
import 'animate.css'
</script>

<style>
@import url("animate.css");
</style>

也可配置成全局样式 (nuxt.config.ts 中)

export default defineNuxtConfig({
  css: ['animate.css']
})

配置全局样式

nuxt.config.ts 中

css 配置

// 配置全局的 css
export default defineNuxtConfig({
  css: ['~/assets/css/main.css']
})

vite 配置 css

export default defineNuxtConfig({
  vite: {
    css: {
      preprocessorOptions: {
        // 配置全局的 scss
        scss: {
          additionalData: '@use "@/assets/_colors.scss" as *;'
        },
        // 配置全局的 sass
        sass: {
          additionalData: '@use "@/assets/_colors.sass" as *\n'
        }
      }
    }
  }
})

修改 head

app.head 配置

export default defineNuxtConfig({
  app: {
    head: {
      link: [{ rel: 'stylesheet', href: 'https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css' }]
    }
}})

动态添加样式表 useHead

useHead({
  link: [{ rel: 'stylesheet', href: 'https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css' }]
})

使用 Nitro 插件修改 head

创建一个插件,放在 ~/server/plugins/my-plugin.ts 中

export default defineNitroPlugin((nitro) => {
  nitro.hooks.hook('render:html', (html) => {
    html.head.push('<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css">')
  })
})

使用 PostCSS

Nuxt 内置了 postcss

nuxt.config.ts 中配置 postcss

export default defineNuxtConfig({
  postcss: {
    plugins: {
      'postcss-nested': {}
      "postcss-custom-media": {}
    }
  }
})

组件中使用

<style lang="postcss">
  /* 在这里编写 stylus */
</style>
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

朝阳39

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值