news 2026/3/24 15:38:46

vue3+vite+scss项目使用tailwindcss

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
vue3+vite+scss项目使用tailwindcss

在 Vue3 项目中集成 Tailwind CSS 是现代前端开发的主流选择(尤其搭配 Vite),核心优势是「原子化样式、高度定制化、按需打包」。以下是完整的集成步骤(覆盖 Vite 脚手架)、基础使用进阶配置避坑指南,全程可落地。

一、前置准备

确认你的 Vue3 项目类型:

  • 推荐:Vite 创建的 Vue3 项目(npm create vue@latest);

二、Step 1:安装依赖(核心)

无论哪种脚手架,先安装 Tailwind CSS 及配套工具(@tailwindcss/postcss用于处理 CSS 编译,@tailwindcss/vite用于Vite配置,autoprefixer自动加浏览器前缀):

# npm 安装npminstall-D tailwindcss @tailwindcss/postcss @tailwindcss/vite autoprefixer# yarn 安装yarnadd-D tailwindcss @tailwindcss/postcss @tailwindcss/vite autoprefixer# pnpm 安装(推荐,速度更快)pnpminstalltailwindcss @tailwindcss/postcss @tailwindcss/vite autoprefixer

三、Step 2:初始化 Tailwind 配置文件

执行以下命令,自动生成tailwind.config.js(核心配置文件)和postcss.config.js(PostCSS 配置):

npx tailwindcss init -p

执行后,项目根目录会新增两个文件:

  • tailwind.config.js:配置 Tailwind 的主题、内容范围、插件等;
  • postcss.config.js:指定 PostCSS 使用 Tailwind 和 autoprefixer。

tailwind.config.js长这样

module.exports={content:['./index.html','./src/**/*.{js,ts,jsx,tsx,vue}',],corePlugins:{container:false,// 禁用 // 禁用 .container 样式},theme:{extend:{},},plugins:[],};

postcss.config.js长这样

constconfig={plugins:{'@tailwindcss/postcss':{},},};exportdefaultconfig;

四、Step 3:配置 Tailwind(关键!避免样式丢失)

修改tailwind.config.js,核心是在content中指定 Vue 组件的路径(告诉 Tailwind 哪些文件需要扫描类名,避免打包时丢失样式):

Vite 配置
importtailwindcssfrom'@tailwindcss/vite';exportdefaultdefineConfig(({mode})=>{return{plugins:[tailwindcss(),],}});

五、Step 4:引入 Tailwind 基础样式

在 Vue3 入口样式文件(如src/assets/main.csssrc/main.css)中,引入 Tailwind 的基础样式、组件样式和工具类样式:

/* src/styles/index.scss */@use'tailwindcss';/* 可选:自定义全局样式(会和 Tailwind 合并) */@layerbase{body{@applybg-gray-50 text-gray-800;/* 复用 Tailwind 类名 */}}

然后在 Vue 入口文件(src/main.js)中导入这个样式文件:

// src/main.jsimport{createApp}from'vue'importAppfrom'./App.vue'import'./styles/index.scss'// 导入 Tailwind 样式createApp(App).mount('#app')

到这里就可以使用了!不需要的以下内容可不看~~~~~~~~~~~~~~~~~~

六、Step 5:VSCode 配置(智能提示,提升体验)

安装两个插件,避免手写类名时拼写错误,且有自动补全:

  1. 安装插件:Tailwind CSS IntelliSense(官方插件,自动提示类名);
  2. 安装插件:PostCSS Language Support(支持 PostCSS 语法高亮);
可选:配置 VSCode 设置(.vscode/settings.json
{"editor.quickSuggestions":{"strings":true// 字符串中也触发 Tailwind 提示(如 Vue 模板的 class 中)},"tailwindCSS.experimental.classRegex":[["class=\"([^\"]*)\"","\"([^\"]*)\""],// 适配 Vue 模板的 class 语法["class='([^']*)'","'([^']*)'"],["class=`([^`]*)`","`([^`]*)`"]]}

七、Step 6:基本使用示例(Vue3 组件中)

在 Vue 单文件组件(SFC)的模板中,直接使用 Tailwind 类名,无需手写 CSS:

示例 1:基础按钮组件
<!-- src/components/Button.vue --> <template> <button class="px-4 py-2 rounded-lg bg-primary text-white hover:bg-primary/90 transition-colors" @click="$emit('click')" > <slot></slot> </button> </template> <script setup> // Vue3 组合式 API,无需额外样式 </script>
示例 2:响应式布局(适配不同屏幕)
<!-- src/App.vue --> <template> <div class="container mx-auto px-4"> <!-- 响应式:小屏幕堆叠,中等屏幕并排 --> <div class="flex flex-col md:flex-row gap-4"> <div class="w-full md:w-1/2 bg-white p-6 rounded shadow"> 左侧内容 </div> <div class="w-full md:w-1/2 bg-white p-6 rounded shadow"> 右侧内容 </div> </div> </div> </template>
示例 3:暗黑模式(一键切换)

Tailwind 内置暗黑模式支持,只需两步:

  1. 修改tailwind.config.js开启暗黑模式:
module.exports={darkMode:'class',// 用 class 控制暗黑模式(推荐)content:[/* ... */],// ...}
  1. 组件中使用暗黑模式类名:
<template> <div class="bg-white dark:bg-gray-800 text-gray-800 dark:text-white min-h-screen"> <button @click="toggleDark"> {{ isDark ? '切换浅色' : '切换暗黑' }} </button> </div> </template> <script setup> import { ref, watchEffect } from 'vue' const isDark = ref(false) // 切换暗黑模式(修改 html 的 class) const toggleDark = () => { isDark.value = !isDark.value document.documentElement.classList.toggle('dark', isDark.value) } // 初始化:读取本地存储的暗黑模式状态 watchEffect(() => { const darkMode = localStorage.getItem('darkMode') === 'true' isDark.value = darkMode document.documentElement.classList.toggle('dark', darkMode) }) </script>

八、进阶优化(提升性能/定制化)

1. 开启 JIT 模式(即时编译,更小体积)

Tailwind 3.x 已默认开启 JIT(Just-In-Time)模式,会按需生成类名,无需额外配置,生产环境体积极小。

2. 自定义主题(对接项目设计规范)

tailwind.config.jstheme.extend中扩展主题,比如自定义字体、圆角、断点:

module.exports={theme:{extend:{// 自定义字体fontFamily:{sans:['Inter','system-ui','sans-serif'],},// 自定义断点(适配移动端)screens:{'xs':'375px',// 新增超小屏断点'3xl':'1600px',},// 自定义圆角borderRadius:{'xl':'1rem','2xl':'1.5rem',},},},}
3. 提取复用类(避免重复写原子类)

@apply提取常用样式为自定义类,减少重复:

/* src/assets/main.css */@layercomponents{/* 自定义按钮类 */.btn-primary{@applypx-4 py-2 rounded-lg bg-primary text-whitehover:bg-primary/90 transition-colors;}/* 自定义卡片类 */.card{@applybg-whitedark:bg-gray-800 rounded-lg shadow p-6;}}

组件中直接使用:

<button class="btn-primary">提交</button> <div class="card">卡片内容</div>

九、常见问题与避坑

1. 样式不生效?
  • 检查tailwind.config.jscontent路径是否正确(必须覆盖所有 Vue 组件);
  • 检查是否导入了main.css且包含@tailwind base/components/utilities
  • 重启 Vite 开发服务器(配置文件修改后需重启)。
2. 生产环境样式丢失?
  • 确保content路径覆盖所有使用 Tailwind 类名的文件(包括动态生成的类名,如bg-${color}-500需提前在配置中声明);
  • 避免动态拼接类名(如class="bg-${color}"),改用完整类名(如bg-primary),或在tailwind.config.js中 safelist 声明动态类名:
    module.exports={safelist:['bg-primary','bg-secondary','text-red-500'],// 强制保留这些类名}
3. 与第三方样式冲突?
  • @layer包裹自定义样式,让 Tailwind 管理优先级;
  • 避免使用!important,优先通过 Tailwind 的优先级规则(如!bg-red-500!提升优先级)。

十、打包与部署

无需额外配置,直接执行打包命令即可:

# Vite 项目npmrun build

打包后的 CSS 文件会自动移除未使用的类名,体积通常只有几 KB 到几十 KB。

总结

Vue3 + Tailwind CSS 的集成核心是:

  1. 安装依赖 + 初始化配置;
  2. 配置content路径(关键);
  3. 引入基础样式;
  4. 组件中直接使用原子类。

这种组合既保留了 Vue3 的组件化优势,又通过 Tailwind 实现了「无冗余 CSS、高度定制化、快速开发」,是现代 Vue 项目的最优样式方案之一。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/23 7:12:25

12、Windows系统管理:注册表、软件、进程、服务及硬件管理全解析

Windows系统管理:注册表、软件、进程、服务及硬件管理全解析 1. 注册表与软件管理 在Windows系统中,注册表是一个关键的数据存储区域,在WPS(Windows PowerShell)的导航概念中,它默认被包含在内。你可以像操作文件系统一样访问注册表,使用一些DOS时代就广为人知的命令,…

作者头像 李华
网站建设 2026/3/13 14:20:47

2025 区块链三国志:ETH 的内功、SOL 的极速与 BSC 的降维打击

1. Ethereum&#xff1a;Pectra 升级后的“模块化”霸主以太坊在 2025 年正式完成了 Pectra 升级&#xff0c;这是自“合并”以来最大的技术跃迁。核心技术&#xff1a;智能账户 (Account Abstraction, EIP-7702)爆点&#xff1a;普通钱包账户&#xff08;EOA&#xff09;现在可…

作者头像 李华
网站建设 2026/3/14 9:54:20

【Axure教程】用中继器制作动态切换的柱状图

柱状图是数据可视化常用的组件&#xff0c;一般的柱状图只能看到某年份各月的数据&#xff0c;如果用组合柱状图或者堆叠柱状图&#xff0c;太多分类看起来也会很缭乱&#xff0c;这时就可以用动态切换的柱状图。 今天作者就教大家在Axure里面如果用中继器做一个可以动态切换的…

作者头像 李华
网站建设 2026/3/21 10:08:28

24、信号量:Posix 与 System V 详解

信号量:Posix 与 System V 详解 1. Posix 信号量概述 Posix 信号量是计数信号量,提供了三种基本操作:创建信号量、等待信号量的值大于 0 然后将其值减 1,以及通过增加信号量的值并唤醒等待该信号量的任何线程来发布信号量。 1.1 类型与特性 Posix 信号量可以是命名的或…

作者头像 李华
网站建设 2026/3/21 5:05:56

25、深入探索 System V 信号量:从基础到应用

深入探索 System V 信号量:从基础到应用 1. 引言 System V 信号量具有内核持久性,这意味着其值能在不同程序间由内核维护。为了更好地展示其使用方法,接下来将介绍几个简单程序,用于创建、操作和删除信号量集。 2. 简单程序介绍 2.1 创建信号量集程序(semcreate) 该…

作者头像 李华
网站建设 2026/3/17 8:05:32

Kotaemon中的缓存失效策略如何避免陈旧数据?

Kotaemon中的缓存失效策略如何避免陈旧数据&#xff1f; 在构建现代智能问答系统时&#xff0c;一个常被低估但至关重要的问题浮出水面&#xff1a;用户问的问题是对的&#xff0c;答案却“过时了”。 这听起来像是个边缘情况&#xff0c;但在企业级知识助手、智能客服或合规咨…

作者头像 李华