Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >解锁网页设计新境界:一文掌握Tailwind CSS

解锁网页设计新境界:一文掌握Tailwind CSS

作者头像
一个程序猿的异常
发布于 2024-03-18 05:39:13
发布于 2024-03-18 05:39:13
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

Tailwind CSS简介

Tailwind CSS是一个高度可定制的实用工具优先的CSS框架,它提供了构建网站界面的底层CSS类,使得开发者可以通过组合这些类来快速构建出独特的设计。与传统的CSS框架(如Bootstrap或Foundation)不同,Tailwind不提供预设计的组件,而是提供原子化的、可复用的工具类,使得你可以按照自己的设计轻松地创建界面,而不必覆盖大量预设样式。

想象一下,你有一盒色彩鲜艳、形状各异的积木。每块积木都有其独特的大小、颜色和形状,就像CSS中的各种样式规则。Tailwind CSS就像这样一盒精心设计的积木,每块积木代表一个CSS工具类——这是你用来搭建和设计网页的基本元素。

积木盒(Tailwind CSS的设计理念)

  • 精选的积木集合: Tailwind提供了一套预先定义的CSS工具类(积木),这些工具类涵盖了边距、填充、字体大小、颜色、布局和更多的样式需求。这就像拥有各种颜色和形状的积木,你可以自由组合它们来创建任何东西。
  • 自定义你的积木盒: 尽管Tailwind给你提供了大量的预定义积木,但你可能还想要一些特别的积木来满足特定的设计需求。Tailwind允许你通过配置文件轻松添加或修改积木(工具类),以适应你的设计语言。

Utilize Class 可以理解成一块块的积木,是原子的不可分割的。

搭建过程(使用Tailwind CSS)

  1. 选择积木: 开始设计页面时,你首先要做的是从积木盒中挑选合适的积木。例如,如果你需要一个带圆角和蓝色背景的按钮,你可以选择相应的roundedbg-blue-500积木。
  2. 组合积木: 接着,你将这些积木(工具类)组合在一起,应用到HTML元素上,就像是把不同的积木拼凑在一起搭建一个房子或是造一辆车。这种方法的美妙之处在于你可以随时重新组合积木,轻松地调整和优化你的设计。
  3. 创造独一无二的作品: 通过不断地选择和组合积木,你最终会创造出一个独一无二的网页设计。每个使用Tailwind CSS的项目都可以具有完全不同的外观和感觉,尽管它们是用相同的工具类搭建的。

深色模式的积木变化(深色模式支持)

想象在你的积木盒中有一组特殊的积木,这些积木在晚上可以发光。在Tailwind CSS中,支持深色模式就像是给你的网页添加了一组可以在用户设备的深色模式下自动变化的积木。通过简单地切换积木(例如,从bg-whitebg-black),你可以让你的设计适应不同的环境,增强用户体验。

使用Tailwind CSS就像是玩一盒无限可能的积木。你可以自由地选择和组合这些积木,创造出既满足功能需求又具有独特美感的网页设计。无论你是想要快速搭建一个原型,还是打造一个完全定制的生产级应用,Tailwind的积木都能帮你高效地实现目标。

安装

大概了解原理以后,让我们动手实践起来吧,编程是一门实践艺术,要不断尝试才能牢记于❤。

尽管 tailwind 提供了多种安装方式,为了快速上手我们使用最简单的 npm 安装。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建新目录
mkdir tailwind-template
cd tailwind-template
# 初始化项目配置
npm init -y
# 安装 TailwindCss
npm install -D tailwindcss
# 初始化tailwincss配置文件
npx tailwindcss init
# 使用编辑器打开目录
code .

配置 tailwind.config.js

将下面的内容复制到 tailwind.config.js 文件内

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/** @type {import('tailwindcss').Config} */
module.exports = {
  content: ["./src/**/*.{html,js}"],
  theme: {
    extend: {},
  },
  plugins: [],
}

我们主要介绍下 content: ["./src/**/*.{html,js}"],这行配置告诉 Tailwind CSS 搜索项目中的 ./src 目录下所有扩展名为 .html.js 的文件。** 是一个通配符,表示匹配任何目录、子目录及其中的文件。因此,./src/**/*.{html,js} 匹配 ./src 目录及其所有子目录中的所有 .html 和 .js 文件。 当你运行 Tailwind 的构建过程时,Tailwind 会分析这些文件,查找所有用到的 Tailwind 类名。然后,它将生成一个 CSS 文件,其中只包含这些类名对应的样式。这个过程称为“提取”(purging),有助于减少最终生成的 CSS 文件的大小,因为它消除了未使用的样式

简而言之,content 属性是 Tailwind CSS 配置中一个非常重要的部分,它确保了最终部署的 CSS 文件是精简和高效的。如果你不正确设置 content,那么你可能会得到一个包含大量未使用样式的 CSS 文件,这会增大文件体积并可能影响页面加载时间。

开始写代码

做完前面的基础配置以后可以畅快的写代码了,在根目录下创建 src 目录,为什么是 src 目录呢?上面有答案哦~

在src目录下新建 main.css 输入以下内容。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@tailwind base;
@tailwind components;
@tailwind utilities;

构建CSS

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 启动 Tailwind CLI 构建过程
npx tailwindcss -i ./src/main.css -o ./src/style.css --watch

运行上面命令以后会在 src 目录生成 style.css 文件,可以观察下文件内容

开始在 HTML 中使用 Tailwind

新建 index.html 文件,输入以下内容:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!doctype html>
<html>
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link href="./style.css" rel="stylesheet">
</head>
<body>
  <h1 class="text-3xl font-bold underline">
    一个程序员的异常,开启TailWindCSS 学习之旅
  </h1>
  <button class="bg-green-400 font-semibold text-white py-2 px-4 rounded hover:bg-green-700">北封</button>
  <button class="bg-green-400 font-semibold text-white py-2 px-4 rounded hover:bg-green-700">北封</button>

</body>
</html>

在src 目录下新建命令行终端,执行 npx live-server 查看效果。

image-20240312090602827

几个简单的 CSS 样式就实现了下划线文本和漂亮的按钮,并且鼠标滑过也只是添加一段class样式而已 hover:bg-green-700 ,太神奇了。

压缩CSS 代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 npx tailwindcss -i ./src/main.css -o ./src/style.css --minify 

复用样式

在main.css 文件添加下面的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
@tailwind base;
@tailwind components;

@layer components {
    .btn-primary {
        @apply py-2 px-5 bg-violet-500 text-white font-semibold rounded-full shadow-md hover:bg-violet-700 focus:outline-none focus:ring focus:ring-violet-400 focus:ring-opacity-75;
    }
}

@tailwind utilities;

这样在样式一直的组件上就能快速复用了。

优化 package.json

细心的你会发现,我们为了达到实时预览的效果使用了两条命令,那么能不能把两个命令简化成1个呢?答案肯定是可以的。

安装 concurrently

在你的项目目录中打开命令行界面,执行以下命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install --save-dev concurrently

配置 package.json

接下来,需要在package.jsonscripts部分添加一个新的脚本来使用concurrently运行你的两个命令。在package.jsonscripts部分定义两个子命令,例如,一个用于启动Tailwind CSS的构建和监视进程,另一个用于启动live-server。然后定义一个父命令来调度这两个子命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  "scripts": {
    "test": "echo \"power by beifffeng@gmail.com\" && exit 1",
    "watch": "tailwindcss -i ./src/main.css -o ./src/style.css --watch",
    "serve": "npx live-server src",
    "dev": "concurrently npm:watch npm:serve",
    "build": "tailwindcss -i ./src/main.css -o ./src/style.css --minify"
  },

运行开发服务器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm run dev

这个命令将同时执行watchserve这两个子命令,使得你在开发过程中只需一个命令窗口就能实现CSS的实时编译和页面的实时预览。

通过这种方式组织你的npm脚本,可以使得脚本更加清晰和模块化,便于管理。每个脚本都专注于一个任务,而总的开发命令dev则负责协调这些任务,使它们并行执行。这种模式在复杂项目中尤其有用,可以帮助你保持构建和服务脚本的清晰度。

官方文档

当你初次踏入Tailwind CSS的世界时,感觉就像是进入了一个充满了色彩和可能性的迷宫。每一步都可能是一个新的发现,或者是一个需要询问导游的转弯。别担心,这是完全正常的!想象一下,你正装备着探险帽,手持望远镜,准备深入这片未知的领域。在这个旅途中,官方文档就像是你的宝典,里面藏着所有秘密和宝藏的地图。

官网就像是那个总是有答案的智慧老者,不论你遇到什么问题——无论是寻找那个完美的颜色,还是调整间距到刚刚好——这位老者总有最合适的建议。所以,每当你感到迷茫或是需要灵感时,不妨直接访问Tailwind CSS的官方文档 https://tailwindcss.com/docs它不仅仅是一个文档,更是一个充满了解答和灵感的宝库。

记住,每个伟大的探险者在开始他们的旅程时都可能会觉得有点不适应。但正是这些不断的探索和学习,最终使他们成为了领航者。所以,拿起你的探险工具,大胆地走进Tailwind CSS的世界,让官网成为你的指南,引领你发现更多的可能性。别忘了,每个CSS类都是一个积木,等待你去发掘和组合,创造出属于你自己的精彩设计。

祝你在Tailwind CSS的旅途中发现无限宝藏!🚀

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-03-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一个程序猿的异常 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
大一C语言实训与总结
} 修正后的程序没有语法错误。执行结果将打印出 a=0 f=134.23,其中 a 的值为 0,f 的值为 134.23。
千山暮海雪
2024/12/25
1210
【python入门系列课程 第七课 计算机是如何做决定的(二)】
本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过。
叶子陪你玩
2020/03/12
4080
QTreeView使用总结13,自定义model示例,大大优化性能和内存[通俗易懂]
前面简单介绍过Qt的模型/视图框架,提到了Qt预定义的几个model类型: QStringListModel:存储简单的字符串列表 QStandardItemModel:可以用于树结构的存储,提供了层次数据 QFileSystemModel:本地系统的文件和目录信息 QSqlQueryModel、QSqlTableModel、QSqlRelationalTableModel:存取数据库数据
全栈程序员站长
2022/09/03
2.7K0
QTreeView使用总结13,自定义model示例,大大优化性能和内存[通俗易懂]
R7-1 学生平均成绩排序
假设学生的基本信息包括学号、姓名、三门课程成绩以及个人平均成绩,定义一个能够表示学生信息的结构类型。输入n(n<50)个学生的成绩信息,按照学生的个人平均分从高到低输出他们的信息。
苏泽
2024/03/01
2690
04:谁拿了最多奖学金
04:谁拿了最多奖学金 总时间限制:1000ms内存限制:65536kB描述 某校的惯例是在每学期的期末考试之后发放奖学金。发放的奖学金共有五种,获取的条件各自不同: 1)     院士奖学金,每人8000元,期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生均可获得; 2)     五四奖学金,每人4000元,期末平均成绩高于85分(>85),并且班级评议成绩高于80分(>80)的学生均可获得; 3)     成绩优秀奖,每人2000元,期末平均成绩高于90分(>90)的学生均可
attack
2018/04/03
1.2K0
MySQL 经典30题,拿走不谢!!!
这里将开始我们的 sql 之旅,在这里希望对 sql 能力稍弱的同学,有一定的帮助。 如果大家在以下 sql 学习中,发现更具有优化性的建议,可以留言给小编或者加技术群交流,让我们一起成长。(底部有WeChat方式)
八点半的Bruce、D
2020/06/09
1.3K0
SQL之50个常用的SQL语句
50个常用的sql语句 Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 SC(S#,C#,score) 成绩表 Teacher(T#,Tname) 教师表 问题: 1、查询“001”课程比“002”课程成绩高的所有学生的学号;  select a.S# from (select s#,score from SC where C#='001') a,(select s#,score  from SC where C#='002') b  wher
互联网金融打杂
2018/04/03
7910
常见的50道数据库面试题
前言:2021年的第一篇公众号,希望自己在学到知识的同时也能分享给大家,一起进步!!
小雯子打豆豆
2021/01/18
1.8K0
SQL语句面试题目_sql基础知识面试题
表结构,节选自:http://www.cnblogs.com/qixuejia/p/3637735.html 题目一,节选,自:https://wenku.baidu.com/view/cda288f1b90d6c85ed3ac671.html 题目二,节选,自:http://www.cnblogs.com/qixuejia/p/3637735.html (为了满足“题目”查询条件,在原文的基础上,插入的测试语句中”增加了几条sc,新增了条Course,修改了student的部分年龄)
全栈程序员站长
2022/09/27
9510
SQL笔试50题(上)
本节内容,我们使用在入门内容部分介绍的在线SQL平台sql fiddle进行测试。
fireWang
2020/02/18
8680
【Python百日精通】深入理解Python条件语句的高级用法
条件语句不仅用于基本的条件判断,还可以扩展到更复杂的逻辑中。以下是一些扩展用法的示例:
屿小夏
2024/08/27
1990
【Python百日精通】深入理解Python条件语句的高级用法
掌握Python控制流:if语句的高级用法
在Python编程中,控制流语句是构建逻辑和执行流程的基础。if语句是控制流语句中最基本、最常用的语句之一。通过if语句,我们可以根据条件执行不同的代码块。本文将详细介绍Python中if语句的高级用法,包括嵌套if、elif的使用、条件表达式、逻辑运算符、组合条件、短路逻辑等,并提供具体的示例代码,帮助全面掌握if语句的高级用法。
sergiojune
2024/07/22
1930
掌握Python控制流:if语句的高级用法
每天 3 分钟,小闫带你学 Python(七)
今天暂时不分享英文名言,因为昨天晚上看到4句话,特别想分享给大家。第一句『物来顺应』告诫我们事情已经发生了,就要顺应去面对;第二句『未来不迎』劝告我们不要为没有发生的事情而焦虑;第三句『当事不杂』告诉我们专注于做好当前的事情;第四句『季过不恋』指明已经过去的事情,无论是好是坏,都不必去留恋。
小闫同学啊
2019/07/30
5320
每天 3 分钟,小闫带你学 Python(七)
超级经典的SQL练习题(MySQL版本),你还怕SQL不过关吗?
微信搜索公众号【C you again】,回复“SQL”下载无水印PDF版本,方便收藏
C you again 的博客
2021/07/08
1.5K0
Python入门教程笔记(二)控制语句
计算机之所以能做很多自动化的任务,因为它可以自己做条件判断,通过条件判断,选择做什么样的逻辑(当然,逻辑是需要我们提前写好的),我们称之为条件分支判断。
Lemon黄
2020/10/10
4600
Python 条件控制 — if语句
引言 生活中的判断几乎是无所不在的,我们每天都在做各种各样的选择,如果这样?如果那样?…… 程序中的判断 流程判断示意图 image.png 成绩等级判断 60分以下为不及格 D 60 - 70 为及格 C 70 - 80 为良好 B 80 - 100 为优秀 A image.png 流程图可以非常直观地描述一个工作过程。 Python中的 if 语句 if 语句基本语法 在 Python 中,if 语句 就是用来进行判断的,格式如下: if 要判断的条件: 条件成立时,要做的事情 .
忆想不到的晖
2021/12/06
7040
Python 条件控制 — if语句
Python语言练习
Python程序由指令组成,运行程序时,计算机依据预设好的指令执行程序。 print是最简单,但很常用的指令,它用于将一些信息输出至屏幕上。 下面演示Python中的print指令:
荣仔_最靓的仔
2021/02/02
3.1K0
Python语言练习
深入理解Python中的if语句
Python 中的 条件控制语句 (Conditional control statement) 是通过一条或者多条语句的执行结果(True 或者 False),来决定执行的代码逻辑 。
皮大大
2021/10/08
1K0
深入理解Python中的if语句
SQL数据库面试题以及答案(50例题)
来源:blog.csdn.net/hundan_520520/article/details/54881208
肉眼品世界
2020/11/11
3.2K0
Golang框架实战-KisFlow流式计算框架(12)-基于反射自适应注册FaaS形参类型
接下来我们来增强KisFlow中Function对业务数据处理的聚焦,将之前Function的写法:
刘丹冰Aceld
2024/07/23
1310
推荐阅读
相关推荐
大一C语言实训与总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验