Tailwind CSS入门(二)——基本介绍和特性

news/2024/12/5 11:47:15/

上一篇文章简要的介绍了原子类CSS,以及个人对语义化、原子化的一些经验和理解。从这篇文章开始,正式开始分享Tailwind CSS的特性、使用和技巧。

Tailwind CSS是一个为快速开发而精心设计的原子类CSS框架,在此我们将搭建一个Vite项目来配合讲解这个的系列课程,需要你掌握一些CSS、Vue的知识。作为一个原子类CSS框架,如果你熟练掌握CSS,那么使用起来将会非常顺手。

无需离开您的HTML,即可快速建立现代网站。

所有的功能类,譬如flex、text-lg、font-medium可以直接写在template中,无须在style或是额外样式表中书写。这样的工作方式让我们在书写代码时非常直观而且快速,维护起来也很容易。

image.png

基于约束,设计系统的API。

功能类可以帮助您在系统的约束下工作,而不是在您的样式表中堆满任意的值。它们可以让您轻松地在颜色选择、间距、排版、阴影以及其他一切构成一个精心设计的系统的元素上保持一致。

我对约束的理解是,Tailwind是构建在基础设计规范之上的,所有内容都可以在项目中对应到UI设计规范,包括但不限于色板、间距、文本大小…即便没有UI设计能力的前端开发人员,也能实现获得一套美观、规范、易维护的页面

// 断点
screens: {'sm': '640px',// => @media (min-width: 640px) { ... }'md': '768px',// => @media (min-width: 768px) { ... }'lg': '1024px',// => @media (min-width: 1024px) { ... }'xl': '1280px',// => @media (min-width: 1280px) { ... }'2xl': '1536px',// => @media (min-width: 1536px) { ... }}// 间距
spacing: {'1': '8px','2': '12px','3': '16px','4': '24px','5': '32px','6': '48px',}

色板
image.png

构建您想要的任何东西。

由于 Tailwind 是非常底层的,因此它从不鼓励您设计相同的站点。即使使用相同的调色板和大小比例,也可以轻松的在下个项目中为同一个组件设计出完全不同的外观。

你可以把Tailwind当作一套精美的UI来看待,也可以把它当作一套大而全的工具库,能够实现任意你想得到的外观和效果,扁平化设计或是复杂的立体效果,温柔或者犀利的风格,都可以做得到。

image.png

生产环境的体积非常小。

在生产构建时,Tailwind会自动去除未使用的CSS,这使得最后的打包产物非常小,在大多数项目中小于10KB。对于追求极致性能与压缩的前端开发者,这是一个非常诱人的特点😄

当构建生产时,您应该总是使用 Tailwind 的 purge 选项来 tree-shake 优化未使用的样式,并优化您的最终构建大小当使用 Tailwind 删除未使用的样式时,很难最终得到超过 10kb 的压缩 CSS。

一切皆是响应式的。

如果我们需要一个页面同时支持PC、平板、手机端,无须再写媒体查询@media,
要添加一个仅在特定断点生效的功能类,只需要在该功能类前加上断点名称,后面跟 : 字符。

<!-- Width of 16 by default, 32 on medium screens, and 48 on large screens -->
<img class="w-16 md:w-32 lg:w-48" src="...">
断点前缀最小宽度CSS
sm640px@media (min-width: 640px) { ... }
md768px@media (min-width: 768px) { ... }
lg1024px@media (min-width: 1024px) { ... }
xl1280px@media (min-width: 1280px) { ... }
2xl1536px@media (min-width: 1536px) { ... }

断点的规则当然也是可以被定制和扩展的。

支持 hover 和 focus 状态

有人会问原子类和行内样式有什么区别?CSS伪类是一个显著的区别,我们无法使用行内样式来书写元素的:hover、:active等伪类,但是原子类可以,因为它就是一个css class,所以当我们依然无须离开html标记去定义伪类的样式。

可以这样使用的状态还有 focus、 activedisabled、 focus-withinfocus-visible、甚至还有像 group-hover 这样的我们自己创造的复杂的状态。

担心复用性问题?大可不必

可能最容易被人吐槽的就是复用问题

当我们使用Tailwind描述一个元素时,可能会在一个class写入6、7甚至更多个的classname,这让追求优雅的开发者觉得很抓狂,特别是重复多次这样的写法时。

如果正在使用流行的框架Vue、React等,可以定制组件,或者使用遍历提高复用性,如果你依然这样觉得不如从前语义化的css,Tailwind提供了@apply指令让我们像过去一样抽取CSS。

想保持原来的使用习惯而不是组件框架模式?使用 Tailwind 的 @apply 指令,复制和粘贴那些类名列表,就可以把重复的功能类抽取到一个自定义的 CSS 类中。

.btn { @apply text-base font-medium rounded-lg p-3; } 
.btn--primary { @apply bg-rose-500 text-white; }

支持深色模式

暗黑模式是现在流行的做法,无论是MDN、Vuejs、Element Plus网站都有一键切换暗黑模式的功能,它仿佛成为了标配。Tailwind也支持实现暗黑模式,只要在dark:后跟上所需类即可。

<div class="bg-white dark:bg-gray-800"><h1 class="text-gray-900 dark:text-white">Dark mode is here!</h1><p class="text-gray-600 dark:text-gray-300">Lorem ipsum...</p>
</div>

易于扩展、调整和改变

Tailwind 包含一组精心设计的开箱即用的默认值,但实际上,所有内容都可定制,比如调色板、间距比例、盒子阴影以及鼠标光标样式。

使用 tailwind.config.js 文件构建您自己的设计系统,然后让 Tailwind 将其转换成您自己的定制 CSS 框架。

Tailwind所有的值都是可以定制和扩展的,这非常重要。我们无法要求UI设计师使用与Tailwind默认值一致的颜色、间距、圆角等,更多时候我们需要根据UI设计稿来定制和扩展Tailwind中的元素,重建新的约束。

theme: {colors: {gray: colors.coolGray,blue: colors.lightBlue,red: colors.rose,pink: colors.fuchsia,},fontFamily: {sans: ['Graphik', 'sans-serif'],serif: ['Merriweather', 'serif'],},extend: {spacing: {'128': '32rem','144': '36rem',},borderRadius: {'4xl': '2rem',}}},

前沿特性带来舒服体验

Tailwind 具有绝对的现代性,它利用所有最新和最优秀的 CSS 特性为开发者带来尽可能愉悦的体验。

我们提供了一流的 CSS grid 支持,由 CSS 变量支撑的可组合的转换和渐变色,对诸如 :focus-visible 等现代状态选择器的支持,以及其它更多的功能。

世界一流的 IDE 集成。

担心记不住所有的类名吗?VS Code 的 Tailwind CSS 智能提示扩展涵盖了所有的类。

在编辑器内既可得到智能的自动完成建议、提示及类定义等功能,而且无需配置。

image.png

以上就是Tailwind CSS的优点和特性,是否能够激发你的想法去尝试一下呢?

下一篇文章,我们将正式开始使用Tailwind CSS。


http://www.ppmy.cn/news/50757.html

相关文章

一些离谱的化学方程式

一些离谱的化学方程式 最近了解了一些比较离谱的化学方程式。特别是最后两个&#xff0c;绝对能够燃起你对化学的激情。希望能够对大家的学习有所帮助。 无奈水博 基础班 Ba2NaBanana 工业制香蕉 2Mg2NaO₂&#xff1d;2Mango 工业制芒果 CO&#xff0b;2Fe&#xff1d;Co…

Docker网络详解

文章目录 一、理解docker0网桥二、Docker网络模式三、Docker容器互联四、自定义网络 一、理解docker0网桥 安装docker的时候&#xff0c;会生成一个docker0的虚拟网桥。 每运行一个docker容器都会生成一个veth设备对&#xff0c;这个veth一个接口在容器里&#xff0c;一个接口…

【Unity-ML】Unity机器学习(一)

安装环境&#xff1a;Windows10 Anaconda3(64-bit)&#xff0c;网上很多教程&#xff0c;例如这个anaconda下载及安装(保姆级教程) - 知乎anaconda包管理器和环境管理器&#xff0c;强烈建议食用 1.下载官网下载太慢可选用镜像下载 官网下载&#xff1a; Anaconda | Individua…

Android硬件通信之 蓝牙Mesh通信

一&#xff0c;简介 蓝牙4.0以下称为传统蓝牙&#xff0c;4.0以上是低功耗蓝牙&#xff0c;5.0开始主打物联网 5.0协议蓝牙最重要的技术就是Mesh组网&#xff0c;实现1对多&#xff0c;多对多的无线通信。即从点对点传输发展为网络拓扑结构&#xff0c;主要领域如灯光控制等&…

linux命令---- ls

这里写目录标题 一 ls的具体指令分类1 ls -a 查看所有文件2 ls -h 人性化的显示 二 ls相关练习1 查看 /usr内容2 查看所有 /usr内容(既包含隐藏,也包含非隐藏)3 查看 /usr详细内容4 简化 查看 /usr详细内容5 易懂简化版 查看 /usr详细内容 6 以树结构显示 一 ls的具体指令分类 …

Linux:network: tcp: EADDRINUSE;SO_REUSEADDR;SO_REUSEPORT;SO_BINDTODEVICE

文章目录 参考问题tcp选项bindsocket-bound dev index的设置参考 https://unix.stackexchange.com/questions/54975/how-to-check-that-a-daemon-is-listening-on-what-interface On linux, which uses a weak host model, every application listens on every interfaces by …

3分钟搞懂:JavaScript 和 ECMAScript

JavaScript 和 ECMAScript ECMAScript 是 JavaScript 语言的国际标准&#xff0c;JavaScript 是 ECMAScript 的一种实现&#xff08;Adobe ActionScript 和 JScript 同样实现了 ECMAScript&#xff09;。 ECMAScript 是欧洲计算机制造商协会 ECMA&#xff08;European Comput…

可观测性的力量:性能和可靠性!

可观测性已成为现代 IT 的一个重要方面&#xff0c;预计其重要性在未来几年只会增加。实时监控和了解系统行为的能力为组织提供了大量信息&#xff0c;可以帮助他们提高网络和应用程序的性能、可靠性和整体健康状况。 通过收集和分析来自各种来源的数据&#xff0c;可观察性使组…