iT邦幫忙

2025 iThome 鐵人賽

DAY 4
0

昨天已經安裝了 sass 和 sass-loader,這兩個就是 Nuxt/Vue 專案使用 SCSS(Sass)的必要套件。

/assets/scss 資料夾中建立 app.scss 檔案,集中定義專案的 CIS 主色系、背景顏色、字級設定,以及常用的全域 class。這些設定作為專案的基礎樣式層,能讓各頁面快速引用並保持設計一致性。

// assets/scss/app.scss

// 字體
@import url('https://fonts.googleapis.com/css2?family=Roboto+Flex:opsz@8..144&display=swap');

// 主色系
:root {
  --main-yellow: #F5B85D;
  --main-light-yellow: #FEF4EA;
  --main-light-orange: #DFB390;
  --main-orange: #BF6730;
  --main-green: #6F6C3E;
  --white: #FFFFFF;
}

// background color
.bg-yellow {
  background-color: var(--main-yellow) !important;
}
.bg-light-yellow {
  background-color: var(--main-light-yellow) !important;
}
.bg-orange {
  background-color: var(--main-orange) !important;
}
.bg-light-orange {
  background-color: var(--main-light-orange) !important;
}
.bg-green {
  background-color: var(--main-green) !important;
}

// text color
.text-yellow {
  color: var(--main-yellow) !important;
}
.text-light-yellow {
  color: var(--main-light-yellow) !important;
}
.text-orange {
  color: var(--main-orange) !important;
}
.text-light-orange {
  color: var(--main-light-orange) !important;
}
.text-green {
  color: var(--main-green) !important;
}
.text-white {
  color: var(--white) !important;
}

// text
.text-h1-semi-bold {
  font-weight: 600;
  font-size: 60px;
}
.text-h2-semi-bold {
  font-weight: 600;
  font-size: 40px;
}
.text-h3-semi-bold {
  font-weight: 600;
  font-size: 32px;
}
.text-h4-semi-bold {
  font-weight: 600;
  font-size: 24px;
}
.text-h4-medium {
  font-weight: 500;
  font-size: 24px;
}
.text-h4-regular {
  font-weight: 400;
  font-size: 24px;
}
.text-h5-regular {
  font-weight: 400;
  font-size: 20px;
}
.text-h6-regular {
  font-weight: 400;
  font-size: 18px;
}

...etc

app.vue 作為專案的根元件,僅保留全域配置;各頁面則集中於 /pages 管理。

<template>
  <router-view></router-view>
</template>

<script>
export default {
  name: 'App',
};
</script>

<style>
</style>

nuxt.config.ts 中,讓它吃到我們設定的 scss 檔案

// nuxt.config.ts nuxt的全域設定

import { defineNuxtConfig } from 'nuxt/config'
import vuetify from 'vite-plugin-vuetify'

export default defineNuxtConfig({
  css: [
    'vuetify/styles',
    '@mdi/font/css/materialdesignicons.css',
    '@/assets/scss/app.scss',
  ],
  build: {
    transpile: ['vuetify'],
  },
  vite: {
    ssr: { noExternal: ['vuetify'] },
    plugins: [
      vuetify({
        autoImport: true, // 自動匯入 Vuetify 元件/指令
      }),
    ],
  },
})

/pages 中新增 index.vue ,套用 vuetify 元件,以及 app.scss 設定好的 class ,看看有沒有效果。

index.vue 預設會是首頁 http://localhost:3001

// pages/index 

<template>
  <v-app>
    <v-main>
      <v-container class="text-center">
        <div class="text-h1-semi-bold text-orange">hello</div>
        <v-btn class="bg-yellow" size="large" prepend-icon="mdi-rocket-launch">
          Hello Vuetify in Nuxt 32222
        </v-btn>
      </v-container>
    </v-main>
  </v-app>
</template>

<script setup>
</script>

<style scoped></style>

https://ithelp.ithome.com.tw/upload/images/20250917/201785810tn41lEcvR.png

有套上顏色就是成功了喔!!!!

※ 如果npm run dev 有顯示 error,可以先查看一下 npm 的版本是不是 20.19.0 ,要記得用nvm切版本,否則起環境會有錯誤提示而看不到畫面。


上一篇
Day 3 建立 Nuxt 3 專案 & 專案結構說明
下一篇
建立 NavBar
系列文
《運用通勤時間打造線上履歷作品集:30 天 Nuxt 自我挑戰》5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言