Vue 3 + Tailwind CSS 全面知识点与案例详解


一、Vue 3 核心语法知识点
1. Vue 3 基础
  • 创建 Vue 3 项目
    使用 Vite 创建项目:
    npm create vue@latest
    # 选择需要的特性(如 TypeScript、Vue Router)
    
  • 响应式数据
    使用 refreactive
    import { ref, reactive } from 'vue';
    const count = ref(0); // 响应式变量
    const user = reactive({ name: 'Alice', age: 25 }); // 响应式对象
    
  • 生命周期钩子
    import { onMounted, onUpdated } from 'vue';
    onMounted(() => {console.log('组件挂载完成');
    });
    onUpdated(() => {console.log('组件更新完成');
    });
    
  • 组件化开发
    创建组件 components/HelloWorld.vue
    <template><div class="text-2xl font-bold text-blue-500">Hello Vue 3!</div>
    </template>
    
  • 路由(Vue Router)
    安装并配置路由:
    npm install vue-router@4
    
    router/index.js
    import { createRouter, createWebHistory } from 'vue-router';
    const routes = [{ path: '/', component: () => import('../views/Home.vue') },{ path: '/about', component: () => import('../views/About.vue') }
    ];
    export default createRouter({ history: createWebHistory(), routes });
    
2. Tailwind CSS 集成
  • 安装依赖
    npm install -D tailwindcss postcss autoprefixer
    npx tailwindcss init -p  # 生成 tailwind.config.js 和 postcss.config.js
    
  • 配置 Tailwind
    tailwind.config.js
    module.exports = {content: ["./index.html", "./src/**/*.{vue,js,ts,jsx,tsx}"],theme: {extend: {colors: { 'brand': '#3490dc' }, // 自定义颜色spacing: { '128': '32rem' },   // 自定义间距},},plugins: [],
    };
    
  • 引入 Tailwind 样式
    src/index.css
    @tailwind base;
    @tailwind components;
    @tailwind utilities;
    
    main.js
    import './index.css';
    

二、Tailwind CSS 核心语法知识点
1. 实用工具类
  • 布局类
    <div class="flex justify-center items-center h-screen">居中容器</div>
    <div class="grid grid-cols-3 gap-4">三列网格布局</div>
    
  • 颜色与背景
    <div class="bg-blue-500 text-white p-4">蓝色背景白字</div>
    <div class="bg-gradient-to-r from-red-500 to-yellow-500">渐变背景</div>
    
  • 文本样式
    <h1 class="text-4xl font-bold underline">大标题</h1>
    <p class="text-gray-700 text-lg">灰色段落</p>
    
  • 边框与阴影
    <div class="border border-gray-300 rounded-lg shadow-md p-4">带边框和阴影的卡片</div>
    
  • 交互效果
    <button class="bg-blue-500 hover:bg-blue-700 text-white py-2 px-4 rounded">悬停按钮
    </button>
    
  • 响应式设计
    <div class="block sm:hidden md:block">在小屏隐藏,中屏显示</div>
    
2. 自定义配置
  • 扩展主题
    tailwind.config.js
    theme: {extend: {fontFamily: { sans: ['Inter', 'sans-serif'] }, // 添加字体animation: { spin: 'spin 2s linear infinite' }, // 自定义动画},
    },
    
  • 插件
    安装插件(如 @tailwindcss/forms):
    npm install -D @tailwindcss/forms
    
    tailwind.config.js
    plugins: [require('@tailwindcss/forms')],
    

三、综合案例:Vue 3 + Tailwind CSS 仪表盘页面
1. 案例目标
  • 创建一个响应式仪表盘页面,包含导航栏、卡片组件、按钮交互和动画效果。
2. 代码实现

src/views/Dashboard.vue

<template><div class="min-h-screen bg-gray-100"><!-- 导航栏 --><nav class="bg-white shadow-md p-4 flex justify-between items-center"><h1 class="text-2xl font-bold text-blue-600">仪表盘</h1><div class="space-x-4"><button class="bg-blue-500 hover:bg-blue-700 text-white py-2 px-4 rounded">首页</button><button class="bg-gray-300 hover:bg-gray-400 text-gray-800 py-2 px-4 rounded">用户</button></div></nav><!-- 主体内容 --><main class="p-6 grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"><!-- 卡片组件 --><div v-for="card in cards" :key="card.title" class="bg-white rounded-lg shadow p-4"><h2 class="text-xl font-semibold mb-2">{{ card.title }}</h2><p class="text-gray-600">{{ card.description }}</p><!-- 动态类绑定 --><div :class="`mt-4 text-sm ${card.status === '活跃' ? 'text-green-500' : 'text-red-500'}`">状态: {{ card.status }}</div></div></main><!-- 动画按钮 --><div class="flex justify-center mt-8"><button @click="animateButton" :class="`bg-purple-500 hover:bg-purple-600 text-white py-3 px-6 rounded transition-transform duration-300 ${isAnimating ? 'scale-110' : 'scale-100'}`">点击动画</button></div></div>
</template><script setup>
import { ref } from 'vue';// 响应式数据
const cards = ref([{ title: '用户统计', description: '展示用户增长趋势', status: '活跃' },{ title: '销售额', description: '本月销售额分析', status: '活跃' },{ title: '错误日志', description: '最近的系统错误', status: '停用' },
]);const isAnimating = ref(false);// 动画触发
const animateButton = () => {isAnimating.value = true;setTimeout(() => {isAnimating.value = false;}, 300);
};
</script>
3. 代码注释说明
  • 导航栏:使用 flex 布局实现响应式导航栏,结合 shadow-md 添加阴影效果。
  • 卡片组件:通过 grid 布局实现响应式多列卡片,使用 v-for 动态渲染。
  • 动态类绑定:根据卡片状态动态切换文字颜色(绿色/红色)。
  • 动画按钮:通过 ref 控制按钮的 scale 变化,实现点击缩放动画。

四、常见问题与解决方案
  1. Tailwind 样式未生效
    • 检查 tailwind.config.jscontent 路径是否正确。
    • 确保 index.css 已正确引入到 main.js
  2. 响应式设计失效
    • 检查是否遗漏 viewport meta 标签:
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      
  3. 动画性能问题
    • 使用 transitionduration 控制动画流畅度,避免过度渲染。

五、总结

通过本案例,你掌握了:

  • Vue 3 的核心语法(响应式数据、组件化、路由)。
  • Tailwind CSS 的实用工具类和自定义配置。
  • 如何结合 Vue 3 和 Tailwind CSS 构建响应式、交互式界面。

下一步建议

  • 学习 Vue 3 的 Composition API 和 Pinia 状态管理。
  • 探索 Tailwind CSS 的插件生态(如 @tailwindcss/typography)。
  • 实践更复杂的项目(如管理系统、电商网站)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92451.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92451.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/92451.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android中RecyclerView基本使用

一、RecyclerView 核心概念1. 基本组件关系2. 核心组件作用Adapter&#xff1a;数据与视图的桥梁LayoutManager&#xff1a;控制布局方式&#xff08;线性/网格/瀑布流&#xff09;ViewHolder&#xff1a;缓存视图组件ItemDecoration&#xff1a;添加分割线等装饰ItemAnimator&…

A100用transformers推理gpt-oss

A100本地用transformers推理gpt-oss GPT-oss试用 gpt-oss有两个原生配置是目前&#xff08;2025-8-8&#xff09;Ampere系列显卡不支持的&#xff0c;分别是默认的MXFP4量化&#xff0c;以及Flash-attn V3。tranformers推理是比较慢的&#xff0c;可以用于研究模型本身&#x…

虚拟手机号工具使用

背景&#xff1a;注册部分国外应用时需要国外手机号验证&#xff0c;例如在注册cursor时需要国外手机号 解决&#xff1a;使用虚拟手机号网页进行验证 https://temp-number.com/ 选择自己需要的国家 选择一个手机号 复制手机号到自己的app注册页面 并发送消息&#xff0c;然后…

【线程池】压测确定线程池合适的参数

【线程池】压测确定线程池合适的参数【一】案例说明【二】明确线程池核心参数及优化目标【1】线程池核心参数&#xff08;需压测验证的关键参数&#xff09;【2】优化目标【三】压测前准备【1】环境搭建【2】线程池初始配置&#xff08;基于经验值&#xff09;【3】压测工具与监…

GPT OSS 双模型上线,百度百舸全面支持快速部署

GPT OSS 是 OpenAI 推出的重量级开放模型&#xff0c;专为强推理能力、智能体任务及多样化开发场景设计&#xff0c;标志着大模型在开放性与实用性上的重要突破。该系列包含两款高性能模型&#xff1a;参数规模为 117B 的 GPT‑OSS‑120B 和 21B 的 GPT‑OSS‑20B。二者皆采用 …

C++高频知识点(十七)

文章目录81. 你对智能指针的了解82. 一元、二元仿函数的区别和使用背景一元仿函数二元仿函数83. 描述Linux下文件删除的原理84. 什么是菱形继承&#xff1f;有什么问题&#xff0c;怎么解决&#xff1f;解决菱形继承问题85. IO多路复用是什么&#xff1f;selectpollepollselect…

如何优雅的使用进行参数校验

在spring里面有一个注解 Validated可以在方法的入参里面这样写//方法 getActivityFlag(RequestBody Validated QueryActivityDto queryActivityDto) //参数详情NotBlank(message "userId不能为空")private String userId;NotNull(message "storeId不能为空&q…

Java学习第一百一十部分——CI/CD

目录 一、前言简介 二、基本信息 三、优势价值 四、核心流程 五、技术栈&#xff08;工具矩阵&#xff09; 六、最佳实践 七、与DevOps关系 八、挑战对策 九、使用建议 十、总结归纳 一、前言简介 CI/CD 的本质是&#xff1a;通过自动化流水线&#xff0c;实现代码从提…

关于 Cocoapods 使用

一、Podfile & .podspec 文件 1、Podfile 1.1. 什么是 pod 简单来说&#xff0c;一个 pod 就是 xcode 里面的一个 dependency&#xff1a; Anyway&#xff0c;pod 就是第三方库的意思。一个 pod 就是指一个第三方库。 1.2. Podfile 有什么用 Podfile 可以理解为就是…

编程速递:2025 年巴西 Embarcadero 会议,期待您的到来

每个英雄都有一段充满奋斗的旅程&#xff0c;这段旅程引领他走向荣耀&#xff0c;而开发者英雄的旅程是2025年巴西Embarcadero大会的重点&#xff0c;以庆祝Delphi成立30周年。网站现已上线巴西Embarcadero在世界上最受期待的Delphi发展英雄会议召开前90天&#xff0c;推出了Em…

DevOps简单教程应用

文章目录概念一、环境准备二、gitlab配置三、.gitlab-ci.yml文件配置概念 Devops是一个概念&#xff0c;就是边开发边测试&#xff0c;能够大大提升开发效率&#xff0c;本文使用pycharmgitlab实现一个简单的DevOps流程 一、环境准备 需要一个测试环境&#xff0c;模拟部署&…

华为流程管理体系构建与落地 之—— 业务流程规划【附全文阅读】

这部分内容聚焦华为业务流程管理&#xff0c;详细阐述了流程规划、设计、运营、评估与优化的具体方法和内容&#xff0c;为企业构建和完善流程管理体系提供了全面的指导。流程规划分类方法&#xff1a;介绍 POS、OES、OMS 等分类法&#xff0c;如 POS 法按规划、运营、支持划分…

Android 项目:画图白板APP开发(零)——功能介绍(笔锋,分页,缩放,多指,硬件加速等)

一、前言 本系列将全面的介绍一些有关Android 画图方面的知识。笔触功能包括&#xff1a;颜色、粗细、透明度、笔锋、橡皮&#xff1b;绘图功能包括&#xff1a;分页、缩放、多指、撤销恢复、笔画加速。别看功能这么多&#xff0c;简单的部分会花较少篇幅介绍&#xff0c;着重会…

香橙派 RK3588 部署千问大模型 Qwen2-VL-2B 推理视频

演示视频 香橙派RK3588部署千问大模型Qwen2-VL-2B推理视频一、场景假设 视频输入为一条网络流&#xff0c;利用大模型对视频中的图像帧进行推理。由于大模型推理耗时长&#xff0c;无法对每帧都进行推理&#xff0c;因此采用跳帧推理的方式&#xff1a;当推理完一帧后&#xf…

排序概念以及插入排序

一、排序基本概念1.就地排序&#xff1a;使用恒定的额外空间来产生输出就地排序只是在原数组空间进行排序处理&#xff0c;也就是输入的数组和得到的数组是同一个2.内部排序和外部排序&#xff1a;待排序数据可以一次性载入到内存中为内部排序&#xff0c;反之数据量过大就是外…

Webpack 核心配置与最佳实践指南

Webpack 是现代前端工程化的核心工具,理解其配置原理和优化技巧对开发效率至关重要。 一、Webpack 基础架构 1、核心概念关系图 2、核心概念详解 概念 作用 示例配置 Entry 应用入口起点 entry: ‘./src/index.js’ Output 编译结果输出位置 output.path: path.resolve(__d…

GISBox私有云+SaaS:安全协同的地理智能平台

一、概述 GISBox&#xff08;GIS 工具箱&#xff09;是一套能够对GIS 影像、地形、倾斜摄影进行场景编辑、切片转化、分发服务的 GIS 工具箱。同时&#xff0c;GISBox还支持私有云并一键开启SaaS服务。 二、什么是私有云&#xff1f; 私有云服务是一种为企业或组织量身定制的…

代理人工智能的隐藏威胁

代理型人工智能的自主性令人兴奋&#xff0c;但事实并非如此。主动性越高&#xff0c;不可预测性就越强&#xff0c;这为严重的、往往被忽视的安全风险打开了大门。从指令劫持到数字供应链的连锁故障&#xff0c;代理型人工智能不仅智能&#xff0c;而且在不受控制的情况下非常…

SonarQube 扫描多个微服务模块

SonarQube 扫描多个微服务模块 在使用 SonarQube/SonarCloud 扫描多个微服务模块时&#xff0c;核心目标是​​确保每个微服务模块被独立分析​​&#xff0c;并在 SonarQube 界面中以独立项目展示结果。以下是具体实现方案&#xff0c;分场景说明&#xff1a; ​​一、前提条…

当前主流且经过市场验证的开源 BI 系统推荐

以下是当前主流且经过市场验证的开源 BI 系统推荐&#xff0c;结合技术特性、适用场景和行业实践&#xff0c;为不同需求提供针对性解决方案&#xff1a;一、综合型开源 BI 平台1. Apache Superset&#xff08;Apache 2.0 协议&#xff09;核心优势&#xff1a;全场景覆盖&…