为什么 Tailwind CSS 这么火?

Tailwind CSS 的优点 Tailwind CSS 是一种现代CSS框架,其核心优点包括内联开发体验、响应式设计简化、一致的设计系统、高度自定义性、开发效率提升以及按需生成的体积优化。与传统CSS开发相比,Tailwind允许开发者直接在HTML中添加类名,无需在HTML和CSS文件之间切换,从而立即看到效果并快速调整。其响应式设计通过简单的前缀实现,使得组件能轻松适应不同屏幕尺寸。Tailwind还提供预设的设计系统,确保设计风格的一致性,并允许根据项目需求完全定制. 阅读详情

你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。

如果我的分享对你有帮助,请关注我,一起向上进击。

在过去的几年里, CSS 编写方式一直在变, 最开始结合HTML文档编写CSS代码到CSS模块化, 以及后来的 CSS-in-js, styled components。

CSS 框架也是层出不穷, 从最初的 Bootstrap 到后来的 elementUI , antd。

它们是每个CSS发展过程中为了优化前端开发而提供的一种解决方案, 但在如今的开发背景下, 都有所约束。

当你使用类似 antd 的UI库时, 一方面享受使用他人封装组件的便利, 另一方面也苦于难以根据自己的需求灵活地改变组件样式。

当你自己编写 styled components, 同样的几行CSS代码很可能出现在不同的组件, 不同的样式中。

而我接下来提到的 tailwind 也是一种全新, 又非全新的CSS框架, 它将为这些问题提出一个新解。

什么是 Tailwind ?

这里常说的 Tailwind 指的就是 Tailwind CSS, 这是一个工具集 CSS 框架,能够助你快速实现定制化的网站设计。

根据我自己的理解, 它具有以下特点:

  1. 功能类优先

  2. 定制化生成工具集

  3. 使用PurgeCSS优化CSS文件体积

接下来我将进行逐一介绍及分析。

功能类优先 (Utility-First)

1. 什么是功能类?

tailwind 并非全新, 这里所指的功能类类似早些年广受排斥的原子类, 但又有些细微的差别。

减少编写成本

按照 less 预编译语言的说法, 每一个功能类就是一个拆分到最基础最原子的混合(mixin)

但是功能类既可以是原子类, 也可以是一定原子类的集合。

/* 同样一行 `background-color` 我们仅需要 `bg-` 即可表示。 */
.bg-gray-400 {
  --tw-bg-opacity: 1;
  background-color: rgba(156, 163, 175, var(--tw-bg-opacity));
}
<div class="bg-gray-400">Hello</div>

早年间, 编写这样一个工具类库, 能够减少我们编写CSS代码的开发成本, 但随着项目定制化精细化程度的增加, 文件体积将会猛然增长。

这些年开发工具的迭代, 像 webpack 这样的文件打包, 按需加载工具, 使得原子类组成的工具集可以更好地扬长避短。

减少代码冗余

tailwind 不会编写线性增长的CSS代码

在编写 styled-components 类似的样式过程中, 我们需要为每一个组件几乎重写一整套CSS样式。

随着项目的复杂度增大, 不同组件的增加, 将会使得冗余代码的数量堆叠。

而 tailwind 通过组合功能类能够达到同样的效果, 但代码却不会因为使用这些共享功能类而变得臃肿。

const ButtonA = styled.a`
  background: white;
  color: black;
`
<ButtonA> Documentation </ButtonA>

const ButtonB = styled.b`
  background: grey;
  color: white;
`
<ButtonB> Documentation </ButtonB>


<button className="bg-white text-black">A</button>
<button className="bg-gray text-white">

Facebook 采用了类似的方法,尽管使用了自定义 CSS-in-JS 库,但该库利用了原子CSS,这与 Tailwind 的 “功能类优先” 方法非常相似。

通过这种方法,他们将整个站点中的CSS捆绑包大小从413kb减少到74kb。减少了约82%!

定制化体现何处?

自由组合功能类

不同于 antd 等UI组件库, tailwind 本身不提供默认组件样式。

“Best practices” don’t actually work.

官方文档说明, 最佳实践实际上行不通, 意思是组件库所提供的样式未必就是项目中我们需要的样式。

我们需要去寻找默认组件中的样式类, 然后修改, 反而更加麻烦。

那么不如我们自由地组合功能类去完成我们需要的样式。

定制化生成功能类库

另一方面, tailwind 接纳 tailwind.config.js 文件进行配置,

我们可以根据我们地需要, 根据UI的需求, 定制化地生成符合我们当前项目的功能类库。

// tailwind.config.js
const colors = require('tailwindcss/colors')

module.exports = {
  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',
      }
    }
  },
  variants: {
    extend: {
      borderColor: ['focus-visible'],
      opacity: ['disabled'],
    }
  }
}

使用PurgeCSS优化CSS文件体积

定制化生成的CSS类库, 体积将随着需求的精细度和项目的复杂度成倍上涨, 这时候文件的大小将难以加入项目中。

这也是原子类的通病, 但是在现如今, 工具发达的今天, 这已不再是绝症。

Tailwind 使用 PurgeCSS 等工具在发布前对代码进行正则匹配,剔除没有使用过的原子类,最后可以将 6MB 的 css 缩减到 20kb-50kb;

这使得文件体积不再是功能类库生成的阻碍。

其他优点

这里就不展开细说了

  1. 自带支持自适应

  2. 类名容易记忆, 方便上手

  3. 能够对功能类进行再次混合

  4. 通过@apply 在css代码中引入混合, 以及其他一系列语法糖

来源:https://juejin.cn/post/6935725712737304613

作者:7Mouse

- EOF -

Tailwind CSS 的开发团队在开源版的基础上,设计了官方的组件库,包含有 500 多个精心设计的组件和 10 套网页模板。官网单独购买的话,要快 300 美金,折合接近 2500 块。

但是如果大家一起共享的话,只需要不到 50 块就可以享受同官网版本相同的服务了。有兴趣的小伙伴可以前往淘宝详情页了解。

c11d0852c42a940078005c9f9348a1da.png

扫码后复制链接到浏览器或淘宝内打开即可

推荐阅读  点击标题可跳转

1、Python 项目工程化最佳实践

2、Python 可以比 C 还要快!

3、streamlit,一个超强的 Python 库

4、豆瓣8.9分的C++经典之作,免费送!

5、Python 3.12 版本有什么变化?

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,领取进击的Grey与小伙伴一起翻译的《Think Python 2e》电子版

回复关键词「书单02」,领取进击的Grey整理的 10 本 Python 入门书的电子版

👇关注我的公众号👇

告诉你更多细节干货

c2290c4a168606a2a1c6b2355119e624.jpeg

欢迎围观我的朋友圈

👆每天更新所想所悟

Tailwind-Css-Learning 立即下载

相关推荐

详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解

声明:本文为原创文章,发表于nebulaf91的csdn博客。欢迎转载,但请务必保留本信息,注明文章出处。 本文作者: nebulaf91 本文原始地址:最大似然估计(Maximum likelihood estimation, 简称MLE)和最大后验概率估计(Maximum a posteriori estimation, 简称MAP)是很常用的两种参数估计方法,如果不理解这两种方法的思路,很

nebulaf91的博客 33万+

分享 6 个你需要使用 Tailwind CSS 的原因

Tailwind CSS因其在构建用户界面(UI)方面的独特方法而在Web开发社区中获得了显着的流行。这个实用优先的CSS框架提供了许多优势,使它成为开发者强大的工具。在本文中,我们将探索6个令人信服的理由,解释为什么您应该考虑在下一个项目中使用Tailwind CSS。1、快速的内联响应式设计过去,我们需要编写复杂的媒体查询来使我们的界面具备响应式能力。但是使用Tailwind CSS,实现响应...

前端达人 473

MineMap开发教程: 北斗网格位置码实时调度技术详解

本文介绍了MineMap4.0引擎中北斗网格位置码的实时调度技术。北斗网格位置码是我国自主研发的空间位置编码标准,具有层次化结构、三维编码等特点。MineMap4.0通过BeiDouGrid类实现了高效的实时调度机制,重点展示了按预想高度进行网格调度的核心功能。关键技术包括视锥体裁剪、LOD控制、高度筛选算法和交互式查询等。该技术在智慧城市、环境监测等领域具有广泛应用前景,凭借高性能、高精度等优势,为三维地理信息可视化提供了有力支撑。

weixin_42568040的博客 1443

Windi CSS和Tailwind CSS以及UnoCSS

通过扫描HTML和CSS并按需生成实用程序,Windi CSS能够在开发中提供更快的加载时间和快速的HMR,并且不需要再生产中进行清除。Windi CSS支持的所有实用程序,无需任何额外配置。UnoCSS是一个具有高性能且极具灵活的即时原子化CSS引擎,具有按需加载的特性。原子化CSS是一种CSS的架构方式,它倾向于小巧且用途单一的class,并且会以视觉效果进行命名。

qq_53280805的博客 2875

太速科技-基于DSP TMS320C6678+FPGA XC7V690T的6U VPX信号处理卡

当多块盘并行工作时,存储阵列读写带宽成指数增长,2块盘则≥4GB/s,4块盘则≥8GB/s,以此类推。存储阵列的存储容量由单盘配置决定,目前单块NVME存储盘存储容量可选择512GB、1TB、2TB、4TB、8TB、16TB。硬盘管理通过文件系统,FPGA的PCIeX4与 6U VPX主板互联,操作系统直接映射管理硬盘,也可以通过前面板QSFP+ 光纤导出给其他服务器设备。本方案优势就是集中的进行采集,存储,计算一体化,降低硬件成本、功耗,减小设备体积、重量。信号处理,无线电通信领域。

Orihard_的博客 678

YOLOV8主干改进方法:C2f-Dual——DualConv轻量化双卷积设计(附改进代码)

DualConv是一种创新的卷积网络结构,旨在构建轻量级的深度神经网络。它通过结合3×3和1×1的卷积核处理相同的输入特征映射通道,优化了信息处理和特征提取。DualConv利用组卷积技术高效排列卷积滤波器,大大降低了计算成本和参数数量。

m0_74890428的博客 4700

Tailwind CSS:快速打造美观网页的秘密武器

Tailwind CSS是一个实用程序优先的CSS框架,旨在使用户能够更快、更轻松地创建应用程序。Tailwind CSS的诞生是为了解决传统CSS方案中的一些问题,如样式冗余、与内容耦合、命名困难、模块化不足等。Tailwind CSS的目标是通过提供一组实用程序类来控制布局、颜色、间距、排版、阴影等,让开发者能够更高效地创建自定义组件,无需编写自定义CSS或保留HTML。通过这种方式,Tailwind CSS能够提高开发效率和代码质量,使应用程序的样式更易于维护和扩展。

你若盛开,清风自来 3593

TMC2209串口配置实战:从寄存器解析到电机精准控制

本文详细解析TMC2209步进电机驱动芯片的串口配置方法,从硬件连接到UART通信协议,再到核心寄存器功能详解。通过实战案例展示电流控制、微步细分和速度调节等关键配置,帮助工程师实现电机精准控制,并提供了常见故障诊断和优化技巧。

f6g7h8i9j的博客 1174

推荐一个强大且实用的 Tailwind CSS 扩展:Mixins for Tailwind CSS

推荐一个强大且实用的 Tailwind CSS 扩展:Mixins for Tailwind CSS 简介 在前端开发中,保持代码简洁和可维护性是至关重要的。Tailwind CSS 的 Mixins 插件正是为此而生,它扩展了 Tailwind CSS 的功能,允许开发者创建可复用的样式组合。通过将一组 Tailwind CSS 实用程序打包为混合(mixin),你可以更高效地管理和应用样式,同...

gitblog_00094的博客 450

tsfknn 预测R语言中的时间序列

rolling参数应该设置为FALSE,这使得最后的18个观测值成为测试集,其余的作为训练集;如果我们将rolling参数设置为默认值TRUE,那么测试集就不会是一个恒定的向量。lag 滞后参数表示时间序列数据的滞后值。在这个例子中,由于我们的时间序列数据是月度的,我们将参数设置为1:12。作为药品福利计划的一部分,澳大利亚健康保险委员会记录的属于ATC代码A10的产品的每月政府支出(百万美元)。我们将使用tsfknn包,它可以用来预测R语言中的时间序列。格式:ts类别的月度时间序列。

Mrrunsen的博客 323

Python时间序列:PaddleTS-时间序列分类

评估的指标采用F1,Precision,Recall,PaddleTS已经基于TSDataset实现了这三个指标的计算,直接调用即可。使用内置的API:get_dataset加载BasicMotions数据集。模型训练完成之后,可以对测试集进行预测并评估。模型保存之后,可以加载模型用于新的数据预测。可以将训练完成的模型保存到指定路径。概率预测 可以返回每个分类的概率。安装paddlets。

斌擎科技 1292

请问Tailwind CSS为什么这么火?

Tailwind CSS提供了一种基于原子类的开发方式,这意味着它将样式定义为小型、可复用的类,而不是预定义的组件或样式。:Tailwind CSS拥有庞大的社区支持和活跃的生态系统。此外,Tailwind CSS还提供了丰富的工具和插件,如构建工具、编辑器插件等,以进一步提高开发效率和开发体验。综上所述,Tailwind CSS凭借其原子级的CSS类、高度可定制性、响应式设计支持、提高开发效率以及强大的社区支持和生态系统等优势,在前端开发中脱颖而出,成为了一个备受推崇的CSS框架。

王铁柱666的博客 515

Android Update Engine 分析(三四)OTA 签名都支持哪些算法?

写了几十篇还没涉及到 OTA 签名算法细节,OTA 讨论群也很少问这个,毕竟签名算法纯理论的问题,一旦实现好就极少需要改动,只需要进行一些配置,准备好签名的秘钥和证书就可以了。限于签名的算法理论太过于抽象,本篇不讨论签名算法细节,但会总结一些签名操作。以及 Android OTA 包支持的签名算法。本文主要分析 Update Engine 中支持的签名算法,以及这些算法的操作实现(不涉及原理部分),并总结签名和验签使用的 key。

洛奇看世界 716

在Blazor中使用Tailwind CSS

在Blazor项目中使用tailwindcss 快速构建UI。

weixin_47711893的博客 2280

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

React 项目中通过 CDN 引入 Tailwind CSS 为什么会出问题?

CDN 引入绕过了 Tailwind 的构建期能力,只保留了最原始、最笨重的一层能力。下面从几个关键维度拆解。

weixin_43560231的博客 1602

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Tailwind Css入门

tailwindcss入门必看,清晰易懂

qq_49108376的博客 2118

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

为什么你应该立即开始使用Tailwind CSS Signals?

Tailwind CSS Signals是一款革命性的插件,它通过样式查询(style queries)简化了基于祖先状态的样式设计。这款插件为Tailwind CSS带来了声明式的状态信号API,彻底消除了复杂的选择器链,让你的代码更加简洁、可维护。无论你是前端新手还是资深开发者,掌握Tailwind CSS Signals都将显著提升你的开发效率和代码质量。 ## 🚀 什么是Tailwin

gitblog_00491的博客 821

原子化CSS框架:Tailwind CSS

扫描所有 HTML 文件、JavaScript 组件以及任何 模板中的 CSS 类(class)名,然后生成相应的样式代码并写入到一个静态 CSS 文件。

luemeon的博客 3881

终极指南:为什么你需要 tailwind-merge 解决 Tailwind CSS 样式冲突的10个理由

在现代前端开发中,Tailwind CSS 已经成为构建美观界面的首选工具。但是,当你在组件中动态切换类名时,是否经常遇到样式冲突的困扰?这就是 tailwind-merge 诞生的原因!这个强大的工具专门用于解决 Tailwind CSS 类名合并时的样式冲突问题。 ## 🎯 什么是 tailwind-merge? tailwind-merge 是一个轻量级的 JavaScript 工具库

gitblog_00965的博客 1325

【亲测免费】 Tailwind To CSS:将Tailwind类转换为CSS的利器

Tailwind To CSS:将Tailwind类转换为CSS的利器 项目介绍 在现代前端开发中,Tailwind CSS已经成为了一个非常流行的工具,它通过提供一组预定义的实用类来帮助开发者快速构建用户界面。然而,有时候我们可能需要将这些Tailwind类转换为原生的CSS代码,以便更好地理解和定制样式。Tailwind To CSS 项目正是为此而生,它能够将Tailwind类转换为CSS代...

gitblog_00076的博客 1315

Tailwind CSS 间距

Tailwind CSS 中,间距(Spacing)是布局的重要组成部分。间距指的是元素之间的距离,包括内边距(Padding)、外边距(Margin)、行间距(Line-Height)、字间距(Letter-Spacing)等。Tailwind CSS 提供了一些常用的工具类,使得这些间距的设置变得更加简便且直观。

unber的博客 1481

CSS库 Tailwind

2021年的最后一段时间,还剩最后一周差不多就要放假了。 今年一直在做的一个项目已经在元旦前后结项,无所事事几天之后,部门老大突发奇想:我们用最后一周的时间来更新一下公司的官网吧。 就这样,周一上午,老大兴致勃勃的给介绍了一下tailwindcss,并扬言让我等边学边做,用一周的时间完成公司官网的所有页面的更新。 今天一整天都在使用tailwind CSS编码,对于第一次接触到这种开发方式的我来说其实有一点不习惯,满屏的div和类名看的我头晕眼花,思来想去,还是应该再系统的学习一下。 先贴上两个tailwi

Dominic_W的博客 2938

Tailwind CSS 凭什么火?与传统 CSS 对比,优势太明显

然而,随着项目的不断演进,当组件的样式需求变得复杂多样时,为了满足不同的场景,可能需要在已有的类名基础上添加更多的修饰类,这就容易导致样式规则变得混乱,难以管理。而且,由于传统 CSS 采用全局样式的方式,不同组件的样式可能会相互影响,出现不必要的样式覆盖和冲突,这不仅会增加样式调试的难度,还可能对页面的渲染性能产生负面影响。而且,在一些对样式有高度定制化需求的项目中,传统 CSS 能够给予开发者完全的控制权,开发者可以根据项目的独特需求,自由地编写和调整样式规则,实现个性化的设计。

2509_93051135的博客 1035

Tailwind CSS

Tailwind CSS Tailwind CSS是一个实用程序优先的 CSS 框架,用于快速构建自定义用户界面. Useful Links 传奇:官方资源 Website - 官方 Tailwind CSS 网站. Repository - 官方 Tailwind CSS 存储库. Discussions - 与其他社区成员就 Tailwind 进行联系的官方场所. Tailwind UI - 使用 Tailwind CSS 制作的组件库. Headless UI - 完全没有样式,完全可访问的

m0_58039950的博客 2805

Tailwind CSS Next.js实战(官方)Tailwind Demo、Tailwind教程

【代码】Tailwind CSS Next.js实战(官方)Tailwind Demo、Tailwind教程。

Dontla的博客 1008

tailwind css

优势 不用命名, 不会使css文件变大 随意更改 与内联样式相比 是从预定义的设计系统中选择样式 响应式设计 可使用hover,focus等 hover:鼠标悬停 focus:焦点 active: group-hover:悬停在父元素上时对子元素设置样式。父元素添加group,子元素添加group-hover group-focus:与group-hover一样 focus-within:尽在一个字元素获得焦点时才应用功能类 focus-visible:当一个元素具有焦点且仅在用户使用键盘时才应用功能类 m

atwillll的博客 5522
上一篇: GitHub 重新定义了 IDE!
下一篇: 爽!我用 Python 自动批改作业
codingpy
博客等级 码龄11年 1870粉丝 104原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值