高效地将 TailwindCSS 与 Nuxt 结合使用

news2024/12/23 18:44:44

在这篇文章中,我们将了解如何在 TailwindCSS 的官方 Nuxt 模块的帮助下有效地将 TailwindCSS 与 Nuxt 应用程序结合使用。我们还将了解如何将 SVG 图标与 TailwindCSS 一起使用,而不是直接使用图像或 SVG 图标,以及如何基于给定图像为 TailwinCSS 构建自定义调色板。

先决条件

最好使用以下命令设置 Nuxt 应用程序并准备好运行:

npx nuxi init tailwind-css-nuxt-demo

tailwind-css-nuxt-demo是我们的代码演示应用程序的名称。您可以根据自己的喜好更改为任何名称。

如果您对TailwindCSS和Nuxt.js的工作原理有基本的了解,那么对遵循本教程将会有所帮助。

使用 Nuxt 设置 TailwindCSS

要开始将 TailwindCSS 与 Nuxt 一起使用,您可以按照TailwindCSS 网站上的说明安装并配置 TailwindCSS 作为依赖项。或者您可以按照以下命令使用官方Nuxt TailwindCSS 模块:

yarn add -d @nuxtjs/tailwindcss

然后将该模块添加到modules以下部分nuxt.config.ts

export default defineNuxtConfig({ modules: ['@nuxtjs/tailwindcss'] })

您已准备好使用 TailwindCSS。但在开始使用它之前,我们需要执行一些额外的工作以确保 TailwindCSS 顺利工作。

使用配置 TailwindCSStailwind.config.ts

我们需要根据需要配置TailwindCSS。为此,我们tailwind.config.ts在项目的根目录中创建一个文件(大多数情况下,它应该与 位于同一级别nuxt.config.ts),其中包含以下代码:

module.exports = { theme: {}, variants: {}, plugins: [], purge: {} }

让我们看一下该文件中定义的属性:

  • theme- 我们在其中设置所有项目的附加自定义主题,包括调色板、字体系列、断点、边框、最小/最大尺寸等。我们可以覆盖默认主题或使用属性扩展它theme.extend
  • variants- 我们为选定的核心实用程序插件(例如appearanceborderColoroutlinezIndex等)定义一系列响应式和伪类变体。
  • plugins- JavaScript 函数的集合,允许我们以编程方式注册其他样式。
  • purge- 可以是一个数组、一个对象或一个布尔值,指示我们如何删除未使用的样式(或不删除)。TailwindCSS 的 Nuxt 模块会自动添加所需的代码,以便在生产过程中清除 CSS 代码,后面是按名称引用任何使用的 CSS 样式的文件列表,如下例所示:

purge: { //enable remove unused CSS only in production enabled: process.env.NODE_ENV === 'production', //any file containing the reference of CSS styles by class name. content: [ 'components/**/*.vue', 'layouts/**/*.vue', 'pages/**/*.vue', 'plugins/**/*.js', 'nuxt.config.js' ] }

由于我们的配置文件位于 TypeScript 中,因此 Nuxt 引擎在运行应用程序时将无法找到它。nuxt.config.ts我们需要通过将以下代码添加到您的 Nuxt 配置对象中来指定文件中该文件的路径:

tailwindcss: { configPath: '~/tailwind.config.ts' },

现在我们已经配置了 TailwindCSS。接下来,我们需要将内置的 TailwindCSS 样式加载到我们的应用程序中。

加载 TailwindCSS 样式

默认情况下,Nuxt TailwindCSS 模块将从./assets/css/tailwind.css应用程序中定位 TailwindCSS 样式。我们还可以使用Nuxt 配置文件中配置对象cssPath的属性来覆盖此默认路径。tailwindcss

tailwindcss: { cssPath: '~/styles/tailwind.css' },

在该styles/tailwind.css文件中,我们可以使用关键字导入 TailwindCSS 类样式@tailwind,如下所示:

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

在上面的代码中,我们导入了basecomponents、 和utilities样式,它们是:

  • 样式base是核心样式。
  • 样式components是针对特定组件的。
  • 这些utilities样式适用于填充、边距等实用程序。

就是这样。当您运行应用程序时,Nuxt 将在其中加载 TailwindCSS,准备好让您自定义应用程序的外观!

接下来,让我们看看如何利用 TaiwindCSS 在应用程序中构建和使用图标,而不是直接使用图像或 SVG 图标的经典方式。

将 SVG 图标与 TailwindCSS 结合使用

在应用程序中使用 SVG 图标是一种常见的做法。通过正确的图标,我们可以为用户提供出色的用户体验,并使应用程序更具吸引力和吸引力。但使用 SVG 图标存在一些挑战,例如需要在应用程序目录中手动创建和保存 SVG 文件或创建动态加载 SVG 图标的组件等。此外,选择要使用的正确图标包也可能是一个挑战。

我们可以为网站上显示的每个图标选择各种选项,从 Vue 组件和 React 组件到简单的 SVG 文件。

Iconify 网站中 Material Icon 的示例

您可以下载所需图标的相关代码段并将其复制并粘贴到您的应用程序中。然而,当您的应用程序需要许多图标时,这种方法可能会很乏味。您可以使用tailwindcss-icons包来解决这样的问题。这个优秀的包允许您将 Iconify 中选定的图标包中的图标加载到 TailwindCSS 中作为应用程序中使用的类。

要开始使用tailwindcss-icons,我们需要将其安装为依赖项:

yarn add -D @egoist/tailwindcss-icons

该包公开了一个方法,用于iconsPlugin为 TailwindCSS 配置生成图标包插件。此方法接受一个集合对象,其中包含要在应用程序中使用的图标包数组,如下所示:

//**tailwindcss.config.ts */ module.exports = { plugins: [ iconsPlugin({ // Select the icon collections you want to use collections: { // collections of icons }, }), ], }

要生成图标包集合,我们可以使用 方法getIconCollections,该方法按名称接受图标包数组,例如 MingCute 集合,如下所示:

plugins: [ iconsPlugin({ collections: getIconCollections(["mingcute"]), }), ],

仅此而已。该包将在编译期间按照模式为每个图标生成类i-<collection_name>-<icon_name>。例如,我们想要来自 MingCute 集的调色板图标,名称为palette-2-line,如以下屏幕截图所示:

Mingcute 包中的调色板图标

为此,我们可以在元素i-mingcute-palette-2-line上使用该类span,采用橙色和超大尺寸,如下所示:

<span class="i-mingcute-palette-2-line text-sea-buckthorn-500 text-2xl" aria-hidden="true" /> <span>Some text</span>

浏览器将显示我们的图标,如下所示:

Mingcute 包中橙色的调色板图标

最好的部分是您不需要手动创建和保存 SVG 文件或创建动态加载 SVG 图标的组件。您需要安装并配置该软件包,然后就可以开始了!

太棒了,对吧?让我们看看如何使用 TailwindCSS 为我们的应用程序构建自定义调色板。

为 TailwindCSS 生成自定义调色板

theme.extend.colorsTailwindCSS 附带一组默认的调色板,但我们也可以使用文件中的字段提供自定义调色板tailwind.config.ts,如下所示:

``` module.exports = { theme: { extend: { colors: {

},
}

}, } ```

colors是一个对象集合,其中每个键是一个调色板名称,每个值是一个 [key,values] 的对象,其中键是颜色的深浅(通常从 50 到 900),值是颜色代码。例如,以下代码定义了一个名为 的调色板sea-buckthorn,其色调范围为 50 到 900,以及每种色调的颜色代码:

module.exports = { theme: { extend: { colors: { 'sea-buckthorn': { 50: '#FEFAF4', 100: '#FEF6E9', 200: '#FCE8C8', 300: '#FBDBA7', 400: '#F7BF66', 500: '#F4A424', 600: '#DC9420', 700: '#926216', 800: '#6E4A10', 900: '#49310B', }, } } );

定义调色板后,我们可以在应用程序中使用它,遵循bg-<color_name>-<shade>背景颜色或text-<color_name>-<shade文本颜色的语法,例如bg-sea-buckthorn-500text-sea-buckthorn-500

真正的挑战来了。我们如何决定每个颜色主题的深浅?有很多方法可以做到这一点,从基于某种颜色理论手动计算阴影或使用外部工具为我们执行相同的任务。

ColorGen 网站

该工具允许我们上传图像,它将以 TailwindCSS 格式生成四种主要调色板及其色调,如以下屏幕截图所示:

ColorGen 网站

剩下的就是将生成的代码复制并粘贴到您的tailwind.config.ts文件中,然后您就可以在应用程序中使用调色板了。

概括

在本教程中,我们学习了如何在 Nuxt.js 应用程序中安装和配置 TailwindCSS。我们还学习了如何注入图标以用作 TailwindCSS 类,tailwindcss-icons以及如何使用外部工具快速轻松地为 TailwindCSS 生成自定义调色板。这些当然只是 TailwindCSS 可以做的事情以及它可以为 Nuxt 应用程序提供的功能的次要方面。如果您还有其他使用 TailwindCSS 和 Nuxt 的技巧,请在评论部分与我分享!

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

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

相关文章

总结5种常用加密算法

前言 在平时的工作中&#xff0c;可能也在很多地方用到了加密、解密&#xff0c;比如&#xff1a; 用户的密码不能明文存储&#xff0c;要存储加密后的密文 用户的银行卡号、身份证号之类的敏感数据&#xff0c;需要加密传输 还有一些重要接口&#xff0c;比如支付&#xff0…

Linux conda 环境迁移 服务器之间迁移

网上很多方法语焉不详&#xff0c;本文主要介绍在Linux系统之间进行单一环境迁移&#xff0c;从服务器A迁移到服务器B的两种方式&#xff1a; conda list方式进行Linux系统在线环境迁移拷贝envs方式进行Linux系统离线环境迁移 conda list方式 迁移完毕后需要手动安装缺失的py…

ProcessOn思维导图流程图 超厉害的入门指南

如果你刚刚认识ProcessOn,不知道从哪里开始&#xff0c;希望这篇内容可以帮助到你。ProcessOn 是什么&#xff1f; ProcessOn 是一款专业的在线思维导图流程图软件。 专业强大的作图工具&#xff0c;支持多人实时在线协作&#xff0c;可用于原型图、UML、BPMN、网络拓扑图等多种…

INDEMIND双目视觉惯性模组实时生成点云并保存点云图

双目惯性相机最开始是从VINS中了解到的&#xff0c;2018年VINS中推荐过Loitor视觉惯性相机&#xff0c;但是后来看到GitHub Issue中有人反映Loitor丢帧、无技术支持等问题&#xff0c;加之购入渠道非官方故未入手Loitor&#xff0c;浏览知乎时关注到Indemind的该款产品&#xf…

AI绘画:Roop插件的特性与安装!

交叉”学科”来了&#xff01; 我们之前讲过可以实现单图换脸的Roop&#xff0c;也讲过可以通过文字描述画画的项目Stable-Diffusion-WebUI。现在这两者要通过sd-webui-roop产生交汇。 我们先来简单的看一下这个插件可以干什么&#xff01; 功能特点 根据项目作者的说法&…

JavaScript二叉树及各种遍历算法详情

目录 什么是二叉树 满二叉树完全二叉树二叉树的存储 数组存储链表存储与二叉树相关的算法 深度优先遍历广度优先遍历先序遍历中序遍历后序遍历 前言: 上一篇文章中介绍了树的概念、深度优先遍历和广度优先遍历&#xff0c;这篇文章我们来学习一个特殊的树——二叉树。 什么是…

【计算机图形学】期末复习,选择题+判断题篇

【计算机图形学】期末复习&#xff0c;选择题判断题篇 题目来源于百度、B站、中国大学慕课网&#xff0c;适用于期末复习&#xff0c;内容仅供参考&#xff0c;祝大家考试顺利通过&#xff01;&#xff01;&#xff01; 文章目录 【计算机图形学】期末复习&#xff0c;选择题判…

App压力稳定性测试之Monkey

目录 前言&#xff1a; 一、Monkey简介 二、monkey常见命令 三、日志导出 前言&#xff1a; Monkey测试是一种黑盒测试方法&#xff0c;用于测试Android应用程序的压力稳定性&#xff0c;目的是评估应用在极端情况下是否能够稳定、可靠地工作。它是Android SDK自带的一个工…

起动元件框图原理

&#xff08;一&#xff09;起动元件作用 为了提高保护动作的可靠性&#xff0c;保护装置的出口均经起动元件闭锁&#xff0c;只有在保护起动元 件起动后&#xff0c;保护装置出口闭锁才被解除。在微机保护装置里&#xff0c;起动元件是由软件来完成的。起动元件起动后&#…

鞣花酸爆增1226%?油橄榄、雪绒花大展拳脚? | 5月功效成分TOP100

数说故事联合用户说共创的5月功效成分榜单如约而至。 本期依旧是你最关注的两大榜单&#xff1a;5月用户最关注功效成分声量TOP100和5月用户最关注功效成分变量TOP100。 榜单通过整合全网社交媒体的声量&#xff0c;并构建指数体系&#xff0c;实时动态监控互联网关键成分的声…

RabbitMQ消息队列的工作模式

文章目录 1.RabbitMQ常用的工作模式2.简单模式3.WorkQueues工作队列模式4.Pub/Sub发布订阅模式5.Routing路由模式6.Topics通配符模式 1.RabbitMQ常用的工作模式 官方文档地址&#xff1a;https://www.rabbitmq.com/getstarted.html 工作模式其实就是消息队列分发消息的路由方…

mysql死锁问题分析

死锁问题分析 起因 起因是线上报了一个死锁问题&#xff0c;然后我就去查看下死锁的原因。 思路 死锁问题的排查&#xff0c; **日常工作中&#xff0c;应对各类线上异常都要有我们自己的 SOP (标准作业流程) ** &#xff0c;这样不仅能够提高自己的处理问题效率&#xff…

智能本质上是人性的拓扑

智能技术的发展是基于人类智慧和思维方式的延伸和拓展&#xff0c;人类的智慧和思维方式是智能的基础&#xff0c;人类是智能技术的创造者和主导者。然而&#xff0c;人工智能技术却与人性并不一致&#xff0c;根本上&#xff0c;人工智能技术并不具备人类的情感、道德、意识等…

适配器模式(Adapter)

定义 适配器是一种结构型设计模式&#xff0c;它能使接口不兼容的对象能够相互合作。 别名 封装器模式&#xff08;Wrapper&#xff09;。 前言 1. 问题 假如你正在开发一款股票市场监测程序&#xff0c;它会从不同来源下载 XML 格式的股票数据&#xff0c;然后向用户呈现…

通过skia导出pdf 生成超链接 skia pdfdocument annotation pdflink

如题 最近导出pdf &#xff0c;想实现文本支持超链接跳转, 看了下skia的官网文档, 翻墙找各种资料 就是找不到关于怎么实现&#xff0c;毫无头绪咋办呢 我想了一下 1.粗略翻阅了下pdf的格式 了解了下基本的构成 啥root page text 啥的 2.通过pdf格式了解到 链接是通过LinkAn…

npm发布自己的公网包步骤详解

初始化项目 比如我&#xff0c;创建了code-transfor-text_vue项目 根目录初始化git git init .建立开源协议 给项目根目录手动创建LICENSE文件文件&#xff0c;没有后缀名 MIT LicenseCopyright (c) 2023 quanyiPermission is hereby granted, free of charge, to any pers…

Verdaccio搭建本地npm仓库

背景 Verdaccio 是一个 Node.js创建的轻量的私有npm proxy registry 我们在开发npm包的时候&#xff0c;经常需要验证发包流程&#xff0c;或者开发的npm包仅局限于公司内部使用时&#xff0c;就可以借助Verdaccio搭建一个npm仓库&#xff0c;搭建完之后&#xff0c;只要更改np…

DataLeap的全链路智能监控报警实践(二):概念介绍

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 概念介绍 基线监控 根据监控规则和任务运行情况&#xff0c;DataLeap的基线监控能够决策是否报警、何时报警、如何报警以及给谁报警。它保障的是任务整体产出链路&a…

MySQL 数据库操作指南:学习如何使用 Python 进行增删改查操作

文章目录 MySQL 知识点1.1 数据库创建和选择1.2 数据表创建和修改1.3 插入数据1.4 查询数据1.5 更新和删除数据 1.6 索引的创建和使用1.7 外键的使用 Python 中使用 MySQL2.1 连接数据库2.2 创建数据库和数据表2.3 插入数据2.4 查询数据2.5 更新和删除数据2.6 关闭连接 2.7 数据…

【算法系列之贪心算法I】leetcode376. 摆动序列

455.分发饼干 力扣题目链接 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最小尺寸&#xff1b;并且每块饼干 j&…