百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Tailwind CSS 4.0 发布,提升构建速度

myzbx 2025-03-06 17:38 10 浏览

作者 | Tim Anderson
译者 | 平川
策划 | Tina

本文最初发布于博客 DEV CLASS。

编写代码

Tailwind CSS 4.0 发布,承诺将构建速度提高 5 倍,增量构建速度提高 100 倍,并提供新的 CSS 特性,只需一条 import 语句即可安装。不过,文档也指出,该版本需要最新的 Web 浏览器核心功能,这可能会限制最初的使用。

在这个流行的 CSS 框架和工具集中,有一个主要的特性是代号为 Oxide 的新构建引擎。该引擎的空间占用比以前少了 35%,虽然主要是用 TypeScript 编写的,但其中包括用 Rust 重写的软件包(用于计算成本最高的操作),并且使用了同样用 Rust 编写的 CSS 解析器 Lightning CSS。

现在,Tailwind CSS 4.0 已针对 Vite JavaScript 和 TypeScript 构建工具做了优化,并且有一个第一方 Vite 插件。根据 Tailwind 创建者 Adam Wathan 的博文,该插件提供了 “最高的性能和最低的配置”。

在该框架新增的 CSS 特性中,有一项是级联层(cascade layers)。它提供了结构特异性,解决了 CSS 中最棘手的特性之一。另一项新特性是使用 CSS 注册自定义属性,允许有默认值的属性设置继承或不继承它们的值。按照 Wathan 的说法,这些现代化特性简化了 Tailwind 的内部结构,使维护工作变得更容易。

一旦使用 npm( Node 软件包管理器)安装了 Tailwind——尽管 npm 并非必要,也有一个独立的工具可供使用,在项目中包含 Tailwind 就只需在 CSS 文件中添加以下语句:

@import “tailwindcss”;

将该框架与 Next.js 或 Angular 搭配使用时,通常会使用 PostCSS 插件,与 SvelteKit 或 Astro 搭配使用时会使用 Vite 插件。此外,还有用于 Ruby on Rails 的 Tailwind gem,以及在任何项目中使用 Tailwind 的 CLI(命令行界面)工具。

配置已从 JavaScript 文件转移到 CSS 文件中,使用主题变量。旧版 JavaScript 配置文件仍支持,但必须显式加载。

Tailwind CSS 4.0 中的调色板从 rgb(红绿蓝)变成了 oklch(Oklab 颜色空间),增加了色度和色调坐标,使色彩更加丰富。新增加的一个 3D 变换 API ,允许缩放、旋转等。

开发人员必须时刻警惕浏览器的兼容性问题,Tailwind CSS 4.0 要求使用最新的浏览器,具体来说是 Chrome 120 或更高版本、Safari 16.4 或更高版本、Firefox 128 或更高版本。这些浏览器的日期必须是 2023 年之后的,而 Firefox 的日期则需要是 2024 年 7 月之后的。文档中说,这些都是 “核心功能 ”所必需的,而 Tailwind 3.0 的要求则较为宽松。建议开发者在使用旧版浏览器时避免使用不支持的功能,而 Internet Explorer 则完全不被支持 。

虽然提供了升级工具,但也存在一些升级问题。这份完整的升级指南列出了所有破坏性的变更。

Tailwind CSS 框架在 MIT 许可下开源。与 Meta 的 Bootstrap 不同,Tailwind CSS 不包含高级组件,但 TailwindUI 中提供了这些组件,不过需要商业许可。

2023 年 CSS 现状调查(2024 年的调查结果尚未发布)显示,“Tailwind CSS 是开发人员乐于继续使用的主要 UI 框架”,其使用率为 50.5%,其中计划继续使用的占 75.7%。Bootstrap 的使用率更高,但略有下降。在这一领域,这两个框架占据着主导地位,排在第三位的 Materialize CSS 使用率为 21.7%。

关于 Tailwind 优缺点的讨论众说纷纭,其中包括使用无构建步骤的 vanilla CSS 的观点。Wathan 创建 Tailwind 正是因为在大型项目中维护 CSS 文件所面临的挑战。有些人对破坏性更改的数量感到不满,但正如一位开发人员所说:“减少依赖和提高性能总是受欢迎的。”

不过,浏览器兼容性是个问题,与大多数初始版本一样,在不确定用户浏览器是否支持的情况下,开发人员会谨慎对待在生产中的早期采用。

原文链接:

https://devclass.com/2025/01/24/tailwind-css-4-0-released-with-ground-up-rewrite-for-faster-rust-powered-build

声明:本文为 InfoQ 翻译,未经许可禁止转载。

今日好文推荐
苹果开始“拯救”Swift ?突然开源百万 App 在用的 Swift Build,迈出推动跨平台一致性的关键一步
10年了,开发人员仍然不明白 Electron 的意义
OpenAI“背水一战”:紧急上线Deep Research,比DeepSeek强三倍?网友直呼AI开源大战要来了!
被DeepSeek逼急了!OpenAI深夜祭出最新轻量级o3-Mini:具备人类思考能力,还提供免费 ChatGPT 版本

相关推荐

炫酷的计时器效果Canvas绘图与动画

-----------------------------------------华丽的分割线-----------------------------------------------------...

康托尔集合的绘制及其Python绘制(康托尔集合论的概括原则是什么)

康托尔三分集(Cantorternaryset)是数学中一个著名的分形例子,由德国数学家格奥尔格·康托尔在1883年引入。它通过不断去掉线段的中间三分之一部分,重复这个过程得到的一个分形集合。康托...

一文带你搞懂JS实现压缩图片(js 压缩图片)

作者:wuwhs转发链接:https://segmentfault.com/a/1190000023486410前言公司的移动端业务需要在用户上传图片是由前端压缩图片大小,再上传到服务器,这样可以减...

数据可视化—Echarts图表应用(数据可视化图表类型)

ECharts是一款由百度前端技术部开发的,基于Javascript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。使用JavaScript实现开源的可视化库,可以流畅的...

ThreeJS中三维世界坐标转换成二维屏幕坐标

Threejs全称是“Javascript3Dlibrary”。WebGL则是openGL在浏览器上的一个实现。Threejs对WebGL进行了封装,让前端开发人员在不需要掌握很多数学知识和绘图知...

鸿蒙开源第三方件组件——加载动画库

前言基于安卓平台的加载动画库AVLoadingIndicatorView(https://github.com/81813780/AVLoadingIndicatorView),实现了鸿蒙化迁移和重构...

canvas实现下雪背景图(canvas绘制背景图)

canvas下雪背景html+css+js实现:1.定义标签:<h1>北极光之夜。</h1><divclass="bg"></...

用canvas画简单的“我的世界”人物头像

前言:花了4天半终于看完了《HeadFirstHTML5》,这本书的学习给我最大的感受就是,自己知识的浅薄,还有非常多非常棒的技术在等着我呢。[熊本表情]扶朕起来,朕还能学!H5新增标签里面最喜欢...

Manim-基础图形之点(什么叫图形基点)

制作数学演示视频时需要用到各类的集合图形,manim中内置了一些列的图形,本篇就从最简单的点讲起。点作为manim中最简单图形,也是其他所有图形的基,所有图形的绘制都是靠点来定位。manim中的点主...

一起学 WebGL:坐标系(坐标系格式)

大家好,我是前端西瓜哥,今天我们来学习WebGL。WebGL的世界坐标系是三维的。默认使用笛卡尔坐标系的右手坐标系,满足右手定则,即x轴向右,y轴向上,z轴向着观察者,原点位于画布中心。然...

漫画 欣赏 - 聖鬥士星矢 THE.LOST.CANVAS 冥王神話 24

《圣斗士星矢THELOSTCANVAS冥王神话》改编自车田正美原作的漫画《圣斗士星矢》,由车田正美原作、手代木史织作画。其外传《圣斗士星矢THELOSTCANVAS冥王神话外传》则在《...

漫画 欣赏 - 聖鬥士星矢 THE.LOST.CANVAS 冥王神話 25 - 完结篇

《圣斗士星矢THELOSTCANVAS冥王神话》改编自车田正美原作的漫画《圣斗士星矢》,由车田正美原作、手代木史织作画。其外传《圣斗士星矢THELOSTCANVAS冥王神话外传》则在《...

Eric Fischl 名画录(eric tucker画家)

艾瑞克费舍尔(EricFischl,1948——),是美国新表现主义画家,当代国际画坛一位十分活跃的人物,在国际上享有很高的知名度。作为20世纪美国第6次经济衰退时期本土第一个伟大画家艾瑞克·费舍尔...

canvas绘画板的实现(canvas画布)

新项目有一个需求:客户需要在订单确认的时候签名。第一反应就是用html的canvas实现,同事一起商量了下,canvas有三个制约:canvas必须要用鼠标,签名会很难看;手机端webapp怎么实现...

Python程序开发之简单小程序实例(9)利用Canvas绘制图形和文字

Python程序开发之简单小程序实例(9)利用Canvas绘制图形和文字一、项目功能利用Tkinter组件中的Canvas绘制图形和文字。二、项目分析要在窗体中绘制图形和文字,需先导入Tkinter组...