Vuetify 是一個基於 Vue.js 的開源 UI 框架,它提供了一系列的預製組件和樣式,讓開發者能夠快速地建立美觀、功能豐富的網頁應用程式。Vuetify 的設計目標是簡化前端開發流程,同時提供一致性的外觀和使用者體驗。
近一年來,Vuetify 的下載量也是表現得不錯
於是我使用了 Vuetify3,並且搭配 TailwindCSS 來做這次的專案
但卻遇到了一個問題...
Vuetify 與 TailwindCSS 的樣式互相衝突了!!!😱
在設定 mb-1 時,會出現兩個 mb-1
Vuetify 的類別會被加上 !important
,導致 TailwindCSS 都會被蓋掉了
搜尋了一下解法,TailwindCSS 有支援前綴的方式,如發生命名衝突時,這會是一個好方法,直接在設定檔加上 prefix
tailwind.config.js
1 | module.exports = { |
這麼一來,所有的樣式前面都會被加上 tw-
1 | .tw-text-left { |
在加類名時就會變成
1 | <div class="tw-text-lg md:tw-text-xl tw-bg-red-500 hover:tw-bg-blue-500"> |
但這有個缺點,TailwindCSS 的類名本來就很長了,每個類名再加上 tw- 後,變得又臭又長,不是很美觀 😥
所以我決定還是從 Vuetify 下手!!
好在爬了幾篇文章後解決了我的問題
只要三個步驟
- Vuetify 基本設定
- 安裝 vite-plugin-vuetify,設定 settings.scss 路徑
- 設定 vuetify utility
Vuetify 基本設定
首先先在進入點加入 Vuetify ,因為我專案需要有一些 icon,所以有加入一些 icon 的檔案,也有針對專案去做一些顏色、breakpoint 的客製設定,這些都可視專案情況加入
main.js
1 | import { createApp } from "vue"; |
安裝 vite-plugin-vuetify,設定 settings.scss 路徑
接著要先安裝 vite-plugin-vuetify,並設定 styles 設定檔的路徑
vite.config.js
1 | import { defineConfig } from "vite"; |
設定 vuetify utility
新增一個 settings.scss 檔案並設定 vuetify utility,我們可以針對不需要使用的 utility 來做關閉,在這邊我關閉了 vuetify 對 margin 和 padding 的相關類別
除此之外也可以調整變數的預設值 🥳
src/assets/scss/settings.scss
1 | @use 'vuetify/settings' with ( |
完全解決了我的問題 🥳🥳🥳
這麼一來就不會有類別覆蓋的問題,也可以結合兩邊的好用之處
大功告成囉!!
Reference
How to replace Vuetify utility classes with TailwindCSS