Vue--》深入学习Tailwind CSS掌握优雅而高效的前端样式开发

news2025/1/18 16:51:40

Tailwind CSS是一个非常强大且灵活的CSS框架,适用于开发者希望高度定制化界面样式的项目。今天博主就 Tailwind CSS 做一个简单介绍以及案例讲解,争取读者阅读文章后入门。

仅靠一篇文章博主也不可能将Tailwind CSS所有内容讲解的面面俱到,在阅读之前博主先将相关的官方文档链接打出来,详细了解Tailwind CSS的话还是推荐阅读 官方文档 ,如果英文水平较差的朋友推荐阅读 Tailwind CSS 中文网 。接下来开始正式的Tailwind CSS学习:

目录

上手Tailwind CSS

基于JIT模式的TailwindCSS

TailwindCSS生态和封装组件

自定义主题及样式


上手Tailwind CSS

Tailwind CSS是一种基于原子设计理念的现代CSS框架。它通过提供大量可复用的独立类来构建界面,而不是依赖于预定义的组件。与传统的CSS框架不同,Tailwind CSS不提供封装好的样式组件,而是专注于提供低级的原子类,使开发者能够自由组合和定制样式。

接下来我们借助官网的介绍使用vite框架创建vue项目来使用Tailwind CSS:

以下是使用创建Vue项目的相关命令,关于vite创建项目的介绍可参考我之前的文章:地址 ,注意如果使用下面命令创建最新版本的vite需要node版本在18.0以上,如果版本过低是创建不了的,如果想进行node多版本管理,可以参考我之前的文章:地址 。

使用vite创建完vue工程之后,接下来我们就需要为该项目安装Tailwind CSS依赖:

npm install -D tailwindcss postcss autoprefixer

回到package.json文件中我们可以看到我们已经安装完成了最新的包:

然后我们执行如下命令,使用 tailwindcss 初始化一个项目,并生成默认的配置文件。-p是一个可选参数,表示使用 PostCSS 进行构建和处理样式。如果存在 PostCSS 的配置文件,则会将 tailwindcss 集成到该文件中,以便使用 PostCSS 处理样式。不存在则创建:

npx tailwindcss init -p

接下来我们需要在生成的tailwind.config.js文件中配置如下的初始内容:

/** @type {import('tailwindcss').Config} */
export default {
  content: ['./index.html', './src/**/*.{vue,js,ts,jsx,tsx}'],
  theme: {
    extend: {},
  },
  plugins: [],
}

接下来我们需要在src文件下创建一个输入指令的css文件,这里命名为tailwind.css,在该文件夹下配置如下内容:

@tailwind base;
@tailwind components;
@tailwind utilities;

一开始使用会出现如下状况:Unknown at rule @tailwindcss(unknownAtRules):

可以在项目根目录下的 .vscode 目录中创建 settings.json 文件并添加以下代码:

{
  "css.lint.unknownAtRules": "ignore"
}

然后启动 Tailwind CLI 构建进程  运行 CLI 工具以扫描模板文件中的类并构建 CSS。 这个命令通常用于在开发过程中实时地将 tailwindcss 的样式应用到项目中,并自动更新生成的 CSS 文件。

npx tailwindcss -i ./src/input.css -o ./src/output.css --watch

接下来需要在src/main.ts 中引入 tailwindcss 编译的输出文件./src/output.css ,这里我将输入文件命名为tailwind.css,输出文件命名为style.css:

import { createApp } from 'vue'
import './tailwind.css'
import './style.css'
import App from './App.vue'

createApp(App).mount('#app')

通常来说,在使用 Tailwind CSS 进行开发时,最终需要将 Tailwind CSS 的样式生成具体的 CSS 文件,然后将该 CSS 文件引入到项目中进行部署上线。这样可以确保在生产环境中使用已经处理好的 CSS 样式,避免依赖于实时编译和处理。这里我们通过如下操作,设置同时启动 vite 项目和 tailwindcss 监听的命令:

  "scripts": {
    "serve": "concurrently \"npm run dev\" \"npm run tail\"",
    "dev": "vite",
    "tail": "tailwindcss -i ./src/tailwind.css -o ./src/style.css --watch",
    "build": "vite build",
    "preview": "vite preview"
  },

关于 concurrently 是一个 Node.js 包,它允许你在一个命令行中同时运行多个命令,如果没有下载的朋友,这里推荐进行全局安装一下:

npm install -g concurrently

接下面我们在App.vue文件中进行如下的代码测试,这里推荐一下代码的提示插件,在vscode搜索即可:

这里提示一下这个插件可能存在的问题,目前博主安装这个插件遇到的情况是只有在书写类名后空格一下才能出现提示,不空格或者重新书写是没有任何提示的,这是由于VS代码处理字符串上下文的方式,在.vscode/settings.json中添加以下内容应该可以解决这个问题,简单提一嘴:

"editor.quickSuggestions": {
    "strings": true
}
<template>
  <div>
    <div class="h-screen bg-red-300 flex justify-center items-center">
      HelloWorld
    </div>
  </div>
</template>

最终终端执行 npm run serve 得到的画面如下,说明我们操作成功:

基于JIT模式的TailwindCSS

在 Tailwind CSS 中,Just-in-Time (JIT) 编译模式的配置选项。是 Tailwind CSS v2.1.0 版本引入的一项新功能。

使用 JIT 编译模式可以显著提高 Tailwind CSS 的开发体验和编译速度。传统的编译模式需要扫描整个 Tailwind CSS 的源代码,并为每个可能用到的类生成对应的 CSS 样式规则,这样会导致编译时间较长。以下是没有开启JIT模式下的输出文件style.css的代码文件

而 JIT 编译模式是一种按需编译的方式,它只会根据你实际使用的类动态生成相关的样式规则,从而减少了编译时间和生成的 CSS 文件大小。这意味着你可以更快地编译和重载页面,并且无需担心生成大量未使用的 CSS。

要启用 JIT 编译模式,你需要在 Tailwind CSS 配置文件(通常是 tailwind.config.js)中的 mode 选项中设置为 'jit':

module.exports = {
  mode: 'jit',
  // 其他配置项...
}

然后我们将原本的设置的输入文件tailwind.css中的第一项代码注释掉:

/* @tailwind base; */
@tailwind components;
@tailwind utilities;

接下来点击输出文件style.css,就可以看到我们的css代码就是说明tailwind原子css生成的代码:

回到页面可以看到我们的代码样式也没有出现变化,大大提高了运行效率:

TailwindCSS生态和封装组件

TailwindCSS 本身并不是一个封装好的 UI 组件库,它更像是一个工具集,提供了大量的实用类来帮助你快速构建自定义的 UI。但结合 Tailwind UI 和其他开源组件库,你可以在项目中快速构建出美观且高效的用户界面。可以参考:地址 ,这里提供了TailwindCSS常用的组件库合集,总会找到适合你的那一款:

这里博主推荐一款好用的吧:地址 ,当然你可以找一下自己喜欢的组件库,都可以。这里就拿这个举例了:

我们拿一下这个 Banner 进行举例:

将代码复制到我们的vue文件当中:

回到我们的页面可以看到样式已经出现到我们的页面当中了:

在 Tailwind CSS 中,可以使用 @apply 指令来提取类并将其应用到自定义的 CSS 规则中。这允许你重复使用和抽象一组类,并将其应用于自定义的样式。接下来我们将上面的UI组件库的某行代码抽离出来制成下面的banner属性:

@tailwind base;
@tailwind components;
@tailwind utilities;

@layer components {
    .banner {
      @apply relative flex flex-wrap bg-indigo-500 px-4 py-3 sm:flex-nowrap sm:items-center sm:justify-center sm:gap-3 sm:pr-8 md:px-8;
    }
}

接下来回到App组件中,我们使用我们创建好的banner属性:

回到页面当中,可以看到我们的页面仍然还是有效果的:

关于TailwindCSS官方提供的组件库是收费的这件事,博主这里就不再介绍该组件库的使用了,因为很贵,大部分人还是用不起的,翻阅上面博主提供的组件库集合的github地址,找找其他的组件库使用也可以,类似下面这种也是不错的:

地址:点击跳转

地址:点击跳转

地址:点击跳转

组件库仅是利于大家提高编程效率的途径而已,找到自己需要的资源进行编程即可。

自定义主题及样式

TailwindCSS提供给我们方便自定义主题及样式的方法,让我们定制网站更有代表性,当我们我们想使用某一个颜色的时候,通过tailwind.config.js设置的自定义主题颜色以及其他相关属性,让我们的定制更具有统一性:

/** @type {import('tailwindcss').Config} */
module.exports = {
  theme: {
    screens: {
      sm: '480px',
      md: '768px',
      lg: '976px',
      xl: '1440px',
    },
    colors: {
      'blue': '#1fb6ff',
      'pink': '#ff49db',
      'orange': '#ff7849',
      'green': '#13ce66',
      'gray-dark': '#273444',
      'gray': '#8492a6',
      'gray-light': '#d3dce6',
    },
    fontFamily: {
      sans: ['Graphik', 'sans-serif'],
      serif: ['Merriweather', 'serif'],
    },
    extend: {
      spacing: {
        '128': '32rem',
        '144': '36rem',
      },
      borderRadius: {
        '4xl': '2rem',
      }
    }
  }
}

theme 对象包含 screens、colors 和 spacing 的键,以及每个可自定义的 核心插件 的键。有关主题选项的完整列表,请参阅 主题配置参考 或 默认主题。 

screens 键允许你自定义项目中的响应断点。

colors 键允许你为项目自定义全局调色板。

spacing 键允许你为项目自定义全局间距和大小比例。

theme 部分的其余部分用于配置哪些值可用于每个单独的核心插件。

如果你想保留主题选项的默认值,但还想添加新值,请在配置文件中的 theme.extend 键下添加扩展。该键下的值将与现有的 theme 值合并,并自动成为可供你使用的新类。

/** @type {import('tailwindcss').Config} */
module.exports = {
  theme: {
    extend: {
      fontFamily: {
        display: 'Oswald, ui-serif', // Adds a new `font-display` class
      }
    }
  }
}

将其添加到你的主题后,你可以像任何其他 font-{family} 工具一样使用它:

<h1 class="font-display">
  This uses the Oswald font
</h1>

要覆盖默认主题中的选项,请直接在 tailwind.config.js 的 theme 部分下添加你的覆盖,这将完全替换 Tailwind 对该键的默认配置,因此在下面的示例中,不会生成任何默认的透明度工具。

/** @type {import('tailwindcss').Config} */
module.exports = {
  theme: {
    // Replaces all of the default `opacity` values
    opacity: {
      '0': '0',
      '20': '0.2',
      '40': '0.4',
      '60': '0.6',
      '80': '0.8',
      '100': '1',
    }
  }
}

写在最后

        通过本文我们了解了 Tailwind CSS 的一些基本概念和特点,以及它为开发人员提供的许多优势。Tailwind CSS 提供了一种全新的方式来构建用户界面,通过直接操作实用类来快速构建自定义样式,极大地提高了开发效率和灵活性。与传统的 CSS 框架相比,Tailwind CSS 不仅更加模块化和可扩展,而且具有出色的响应式设计和可访问性支持。学习和掌握 Tailwind CSS 不仅可以帮助我们更快地开发出现代化的用户界面,还能够提高我们对 CSS 的理解和应用能力。

        作为一个备受欢迎且不断发展的工具,学习和了解 Tailwind CSS 的重要性在不断增强。无论是前端开发人员还是设计师,掌握 Tailwind CSS 都将成为我们职业发展中的重要优势。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【开源】JAVA+Vue+SpringBoot实现毕业生追踪系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 登陆注册模块2.2 学生基本配置模块2.3 就业状况模块2.4 学历深造模块2.5 信息汇总分析模块2.6 校友论坛模块 三、系统设计3.1 用例设计3.2 实体设计 四、系统展示五、核心代码5.1 查询我的就业状况5.2 初始化就业状况5.…

线性代数的本质 2 线性组合、张成的空间、基

基于3Blue1Brown视频的笔记 一种新的看待方式 对于一个向量&#xff0c;比如说&#xff0c;如何看待其中的3和-2&#xff1f; 一开始&#xff0c;我们往往将其看作长度&#xff08;从向量的首走到尾部&#xff0c;分别在x和y上走的长度&#xff09;。 在有了数乘后&#xff0…

第二节:轻松玩转书生·浦语大模型趣味Demo

参考教程&#xff1a;https://github.com/InternLM/tutorial/blob/main/helloworld/hello_world.md InternLM-Chat-7B 智能对话 Demo 终端运行 web demo 运行 1.首先启动服务&#xff1a; cd /root/code/InternLM streamlit run web_demo.py --server.address 127.0.0.1 --…

基于matlab的密度散点图绘制

1. 什么是密度散点图&#xff1f; 密度散点图就是在普通散点图的基础上&#xff0c;基于样本点一定范围的样本数计算该样本点的密度&#xff0c;以不同的颜色来显示样本点密度的大小&#xff0c;这样能够直观的显示出数据的空间聚集情况&#xff0c;如下图分别是二维和三维密度…

2024年世界听力日活动的主题是什么?

改变思维模式&#xff1a;让所有人的耳和听力保健成为现实&#xff01; Let’s make ear and hearing care a reality for all! 据 世界卫生组织 报道&#xff1a;在全球范围内&#xff0c;超过 80% 的耳和听力保健需求仍未得到满足 &#xff1b; 未得到解决的听力损失每…

「计算机网络」数据链路层

数据链路层的地位&#xff1a;网络中的主机、路由器等都必须实现数据链路层信道类型 点对点信道&#xff1a;使用一对一的点对点通信方式广播信道 使用一对多的广播通信方式必须使用专用的共享信道协议来协调这些主机的数据发送 使用点对点信道的数据链路层 数据链路和帧 链…

ubuntu下如何查看显卡及显卡驱动

ubuntu下如何查看显卡及显卡驱动 使用nvidia-smi 工具查看 查看显卡型号nvida-smi -L $ nvidia-smi -L GPU 0: NVIDIA GeForce RTX 3050 4GB Laptop GPU (UUID: GPU-4cf7b7cb-f103-bf56-2d59-304f8996e28c)当然直接使用nvida-smi 命令可以查看更多信息 $ nvidia-smi Mon Fe…

【Ubuntu】在.bashrc文件中误设置环境变量补救方法

这里是vim也不在PATH中了&#xff0c;因为 解决方法就是在输入vim之后提示的vim路径下用vim打开该文件&#xff0c;然后改回来

C++基础入门:掌握核心概念(超全!)

C作为一门广泛使用的编程语言&#xff0c;以其高性能和灵活性在软件开发领域占据重要地位。无论是游戏开发、系统编程还是实时应用&#xff0c;C都是一个不可或缺的工具。本博客旨在为初学者提供C编程语言的核心概念&#xff0c;帮助你建立坚实的基础。 C关键字 C关键字是编程…

SPP改进(多窗口池化)

论文创新点汇总&#xff1a;人工智能论文通用创新点(持续更新中...)-CSDN博客 原来的模型 15年提出 本质&#xff1a; 多个不同大小的池化窗口进行池化 池化窗口越大得到的特征越少 之后再将不同池化窗口得到的特征拼接起来 现在的改进 实现代码 class SPPCSPC(nn.Modul…

【python】网络爬虫与信息提取--Beautiful Soup库

Beautiful Soup网站&#xff1a;https://www.crummy.com/software/BeautifulSoup/ 作用&#xff1a;它能够对HTML.xml格式进行解析&#xff0c;并且提取其中的相关信息。它可以对我们提供的任何格式进行相关的爬取&#xff0c;并且可以进行树形解析。 使用原理&#xff1a;它能…

Linux_线程

线程与进程 多级页表 线程控制 线程互斥 线程同步 生产者消费者模型 常见概念 下面选取32位系统举例。 一.线程与进程 上图是曾经我们认为进程所占用的资源的集合。 1.1 线程概念 线程是一个执行分支&#xff0c;执行粒度比进程细&#xff0c;调度成本比进程低线程是cpu…

LeetCode、739. 每日温度【中等,单调栈】

文章目录 前言LeetCode、739. 每日温度【中等&#xff0c;单调栈】题目链接及分类思路单调栈 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质作者、专注于Java后端技术领域。 涵盖技…

python算法之 Dijkstra 算法

文章目录 基本思想&#xff1a;步骤&#xff1a;复杂度&#xff1a;注意事项&#xff1a;代码实现K 站中转内最便宜的航班 Dijkstra 算法是一种用于解决单源最短路径问题的经典算法。该问题的目标是找到从图中的一个固定顶点&#xff08;称为源点&#xff09;到图中所有其他顶点…

vue三种路由守卫详解

在 Vue 中&#xff0c;可以通过路由守卫来实现路由鉴权。Vue 提供了三种路由守卫&#xff1a;全局前置守卫、全局解析守卫和组件内的守卫。 全局前置守卫 通过 router.beforeEach() 方法实现&#xff0c;可以在路由跳转之前进行权限判断。在这个守卫中&#xff0c;可以根据用…

C++ Qt框架开发 | 基于Qt框架开发实时成绩显示排序系统(2)折线图显示

对上一篇的工作C学习笔记 | 基于Qt框架开发实时成绩显示排序系统1-CSDN博客继续优化&#xff0c;增加一个显示运动员每组成绩的折线图。 1&#xff09;在Qt Creator的项目文件&#xff08;.pro文件&#xff09;中添加对Qt Charts模块的支持&#xff1a; QT charts 2&#xf…

【动态规划】【中位数】【C++算法】1478. 安排邮筒

# 作者推荐 【深度优先搜索】【树】【图论】2973. 树中每个节点放置的金币数目 本文涉及知识点 动态规划汇总 LeetCode1478. 安排邮筒 给你一个房屋数组houses 和一个整数 k &#xff0c;其中 houses[i] 是第 i 栋房子在一条街上的位置&#xff0c;现需要在这条街上安排 k…

Linux_文件系统

假定外部存储设备为磁盘&#xff0c;文件如果没有被使用&#xff0c;那么它静静躺在磁盘上&#xff0c;如果它被使用&#xff0c;则文件将被加载进内存中。故此&#xff0c;可以将文件分为内存文件和磁盘文件。 内存文件 磁盘文件 软、硬链接 一.内存文件 1.1 c语言的文件接口 …

波奇学Linux:文件系统

磁盘认识 磁盘被访问的基本单元是扇区-512字节。 磁盘可以看成多个同心圆&#xff0c;每个同心圆叫做磁道&#xff0c;多个扇区组成同心圆。 我们可以把磁盘看做由无数个扇区构成的存储介质。 要把数据存到磁盘&#xff0c;先定位扇区&#xff0c;用哪一个磁头&#xff0c;…

算法沉淀——链表(leetcode真题剖析)

算法沉淀——链表 01.两数相加02.两两交换链表中的节点03.重排链表04.合并 K 个升序链表05.K个一组翻转链表 链表常用技巧 1、画图->直观形象、便于理解 2、引入虚拟"头节点" 3、要学会定义辅助节点&#xff08;比如双向链表的节点插入&#xff09; 4、快慢双指针…