Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Tailwind CSS vs 现代CSS,Tailwind CSS 会像CSS-in-JS 一样亡?

Tailwind CSS vs 现代CSS,Tailwind CSS 会像CSS-in-JS 一样亡?

作者头像
前端小智@大迁世界
发布于 2024-02-12 00:45:34
发布于 2024-02-12 00:45:34
4410
举报
文章被收录于专栏:终身学习者终身学习者

免费体验 Gpt4 plus 与 AI作图神器,我们出的钱 体验地址:体验

本文是 关于Tailwind CSS 与 现代 CSS之间比较的文章。文章中作者详细比较了这两种CSS开发方法的优缺点。他指出,Tailwind CSS是一种基于类的CSS框架,提供了快速开发网站的便利性,但可能导致HTML代码的臃肿。另一方面,现代CSS方法更加模块化和可维护,但编写速度可能较慢。

下面是正文~~

Tailwind 是一个深受喜爱的 CSS 框架,它拥有许多受欢迎的功能,用于创建用户界面。在本文中,我们不会深入探讨 Tailwind,而是要探讨 Tailwind 中使用内联类的问题,以及触及一些改变我们处理这些问题的新的原生 CSS 功能。

内联类

内联类是 Tailwind 的一个备受赞誉的特性。在寻求关于 Tailwind 的反馈时,作者收到了各种各样的意见,但其中一个观点引起了作者的关注。这个问题并不是特指 Tailwind,而是更多地关于开发者修改代码的态度:

“我可以在一个视图中编辑所有内容”

有些开发者表示,他们喜欢 Tailwind,因为他们可以不切换屏幕就管理他们的 CSS 和 HTML。因此,作者对此持有坚定的立场:

作者强烈建议,管理多个文件或语法应该是工具,如 IDE、文本编辑器、终端或甚至多显示器的责任,而不应该在代码库中解决。

以上并不是特指 Tailwind,而是关于对软件开发有一个专业的认识。作者不希望这个立场受到反驳,作者相信这是一个成熟的看法。

内联类的优势

一个内联类定义了一个范围。Rohan 很好地描述了 Tailwind 的这个优势:

这可能是与传统 CSS 项目中的不可预测的做事方式相比,Tailwind 最引人注目的优势。

原生 CSS 中的作用域

幸运的是,现代 CSS 可以与传统的 CSS 不同地进行作用域化。原生 CSS 至少有两种方式可以定义范围。

经过两个月后:

在级联层中包裹你想要调整的新样式

在嵌套作用域中使用新类

这两种方法都使用原生 CSS,并可以达到与 Tailwind 相同的效果,尽管对于某些人来说,可能需要进行一些范式转变才能习惯。


内联类的问题

关于内联类,有一些问题。这些问题可能是微不足道的,也可能是严重的,这取决于你的项目或你如何解释它们。

  • 内联类有时会变得很重:在撰写本文时,tailwindcss.com 的着陆 HTML(只是一个方便的案例研究)使用了 tailwind 的内联类,其大小为 432.5KB。类属性及其值构成了 249KB 的数据,这意味着页面大小的 57.6% 来自内联类。而使用现代本地 CSS 时,这一比例约为 5%-15%。
  • 大量 HTML 会影响你的 PageSpeed Insights 分数:FE 开发人员喜欢说 "但它是经过 gzip 压缩的,兄弟",以此来为过大的有效负载辩解。但服务器的 gzip 大小有点误导。在这种情况下,更重要的问题是 DOM Attr 节点的数据大小对内存的影响,这是内联样式的结果。
  • 属性杂乱:在属性杂乱问题上,Tailwind 开发人员的立场各不相同。调试在生产和开发代码中都要进行。任何否认这一点的人,要么是在撒谎,要么就是从未参与过需求量大的大型项目。HTML 没有源映射,因此尽管进行了缩减,也不能太乱。
  • 高带宽:我们生活在一个免费云服务的世界里,因此这可能不会成为大多数项目的大问题,但对于超过免费带宽的高带宽网站来说,重型 HTML 可能会产生一些额外费用,具体取决于你的云提供商。CSS 样式表是专门为在 HTTP 概念中进行缓存而设计的。Tailwind的内联类是HTML文档的一部分,而HTML文档的变化通常更为频繁,一般不会像CSS样式表那样被缓存。
  • 重复的样式方言:Tailwind 将允许你定义内联类语法,这是一种类似 CSS 的简化方言。这些类链接到框架 CSS 规则。这本身并不是直接的重复,而是在框架代码的 CSS 中也体现了 CSS 的额外权重。

CSS 嵌套改变了一切

因为嵌套作用域是私有的:

  • 不必为每个元素都定义一个类,只需合理判断即可。
  • 不再需要遵循 BEM、OOCSS 或其他传统的 CSS 方法。所有这些都已经过时了。

与 CSS 框架相比,CSS 嵌套和相对选择器不仅意味着我们定义的内联类更少,而且与传统 CSS 项目相比,我们定义的内联类也更少。

总结

如果你还在使用老式的 CSS,那就停下来吧。想办法与时俱进吧。也许下面的内容能帮到你,但这已经超出了你的能力范围(没有双关的意思):

在过去 15 年多的时间里,CSS 库和框架主要依赖于过多的内联类。Tailwind 也不例外。

在作者看来,嵌套 CSS 和 Tailwind 这样的 CSS 框架似乎并无必要。建议根据自己的需求选择其中一种方法。

Tailwind 非常庞大,作者相信从 CSS 到 Tailwind 的影响比从 JS/TS 到 React 还要大。所以不可避免地,会有很多思想领袖和开发者来淡化这篇文章中提到的许多问题。

这里没有什么新鲜事。当 CSS-in-JS 出现时,我们遇到了类似的情况,在一开始,开发者注意到它正在复制 CSS 足迹,并在某种程度上违背了缓存和失效的概念。

希望这篇文章能为你解答有关 CSS 在现实世界中的问题和解决方案。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-02-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
技术天地 | CSS-in-JS:一个充满争议的技术方案
为了解决传统CSS在现代前端应用开发中遇到的痛点,FreeWheel评估了大量新一代的CSS框架/工具/方案。在本文中,作者以评估过程为线索,介绍了CSS-in-JS的背景、现状、开发特点和趋势。
用户6543014
2020/08/07
2.8K0
技术天地 | CSS-in-JS:一个充满争议的技术方案
Tailwind CSS (可能)是名过其实的
Tailwind CSS 是一个工具集 CSS 框架,网上很多文章已对其有详尽的介绍。本文不是官方文档的复述,也不是系列优点的罗列,作者 Gerard 会从另一个角度出发,在尽力保持客观的前提下,立足于实际开发的场景,指出 Tailwind CSS 存在的一些问题。事实上,除了文中提及的,Tailwind CSS 还存在着不少缺点,比如对高度定制化的支持程度不足、记忆大量预定义类名带来的心智负担等。友情提醒,你不一定会赞同这篇文章的看法,因为我们的看法会受到自身认知和使用体验的影响,但更重要的是可能是作者对新兴技术的态度,用他的原话说,就是:“When everyone is shouting that it’s awesome, it’s usually a good moment to sit down and have a good look at it”
Chor
2021/03/30
2.1K0
Tailwind CSS (可能)是名过其实的
CSS闯关指南:从手写地狱到“类”积木之旅|得物技术
在Web开发网页设计中,CSS(层叠样式表)扮演着至关重要的角色,它用于控制网页的布局、外观和视觉效果。CSS不仅可以美化网页的视觉表现,还可以提高网页的可访问性、可维护性和响应式设计。在我们进行网页开发的时候,CSS是必不可少的一个环节。但是在早期的纯手写CSS阶段时会存在很多的痛点,这些痛点催生了 CSS 预处理工具(如 Sass/Less)和 CSS-in-JS 方案的兴起,进入工具曙光时代,但它们本质上仍未能突破"手动编写样式规则"的范式。直到原子化 CSS 理念的回归——通过预定义的实用类(Utility Classes)组合样式,配合智能化的工具链,为解决传统 CSS 困境提供了新的思路。
得物技术
2025/05/26
1610
CSS闯关指南:从手写地狱到“类”积木之旅|得物技术
Tailwind CSS 辩论:又一款被网络纯粹主义者贬低的酷工具
就像 React 一样,CSS 工具 Tailwind 经常在 Web 开发者圈子中进行辩论。它非常受欢迎,但也有它的反对者。
云云众生s
2024/03/28
2300
react的css
与传统 html 标签类属性不同,react 中 class 必须编写为 className,比如
愧怍
2022/12/27
1.7K0
react的css
Tailwind CSS 是目前世上最好的CSS框架,你赞同吗?
今天看了一篇国外大佬对 Tailwind CSS 的看法,在这里分享给大家,看看大家是否赞同,以下是其相关内容的整理,由于翻译水平有限,欢迎大家讨论和指正。
前端达人
2023/09/25
1.1K0
Tailwind CSS 是目前世上最好的CSS框架,你赞同吗?
分享 6 个你需要使用 Tailwind CSS 的原因
过去,我们需要编写复杂的媒体查询来使我们的界面具备响应式能力。但是使用Tailwind CSS,实现响应式设计就像给HTML元素添加类一样简单。您可以直接在类属性中指定响应式的行为,而无需在单独的CSS文件中定义媒体查询。
前端达人
2023/08/31
6000
分享 6 个你需要使用 Tailwind CSS 的原因
再见,CSS-in-JS
大家好,我 ssh。在过去的开发中,我一直在用 styled-component 库作为 CSS 的解决方案。它有很多优点,灵活、可复用性强、功能强大、可以接受动态 JS 变量传入组件等等…… 但今天我看到一篇文章,说都是 Spot 团队的人已经决定抛弃 CSS-in-JS 的方案了,因为对他们来说,性能损耗已经远远超过其灵活性的优势了。接下来,我来和大家分享一下这篇Why We're Breaking Up with CSS-in-JS
ssh_晨曦时梦见兮
2023/10/14
7620
再见,CSS-in-JS
为什么和 CSS-in-JS 说拜拜
本文是由 Emotion 的第二大活跃维护者 Sam 分享,本文第一人称都指的是 Sam。Emotion 是一个广泛流行的 CSS-in-JS 库,用于React。文文章 Sam 会带大家深入探讨 CSS-in-JS 最初吸引人的原因,以及为什么作者(以及Spot团队的其他成员)决定放弃它。
前端小智@大迁世界
2022/11/30
2.5K0
为什么和 CSS-in-JS 说拜拜
Vue3中使用Tailwind CSS
当谈到前端开发框架时,Tailwind CSS 是一个备受瞩目的选择。它是一款功能强大且灵活的CSS框架,提供了大量的实用工具类,帮助开发者快速构建现代化的用户界面。在本篇技术博客中,我们将深入了解 Tailwind CSS 的主题和使用。
用户6297767
2023/11/21
1.1K0
Vue3中使用Tailwind CSS
Tailwind CSS,值得2024年的你一试吗?
对于那些终于找到了自己热爱的编程工作的开发者们来说,他们常常会遇到一个难题:用编程谋生固然美妽,但当你不得不反复做着相同的任务时,这份热爱还会持续吗?我们知道,编写CSS可能看起来很有趣,但如果要重复进行,情况可能就大不相同了。
前端达人
2024/01/14
8600
Tailwind CSS,值得2024年的你一试吗?
CSS in JS的好与坏
CSS-in-JS是一种技术(technique),而不是一个具体的库实现(library)。简单来说CSS-in-JS就是将应用的CSS样式写在JavaScript文件里面,而不是独立为一些 .css, .scss或者 less之类的文件,这样你就可以在CSS中使用一些属于JS的诸如模块声明,变量定义,函数调用和条件判断等语言特性来提供灵活的可扩展的样式定义。值得一提的是,虽然CSS-in-JS不是一种很新的技术,可是它在国内普及度好像并不是很高,它当初的出现是因为一些 component-based的Web框架(例如React,Vue和Angular)的逐渐流行,使得开发者也想将组件的CSS样式也一块封装到组件中去以解决原生CSS写法的一系列问题。还有就是CSS-in-JS在React社区的热度是最高的,这是因为React本身不会管用户怎么去为组件定义样式的问题,而Vue和Angular都有属于框架自己的一套定义样式的方案。
进击的大葱
2022/08/22
2.5K0
CSS in JS的好与坏
「前端工程四部曲」模块化的前世今生(下)
上文「前端工程四部曲」模块化的前世今生(上)中我们主要介绍了JS模块化相关的知识,对于JS模块化,相信很多人都不陌生,但说起CSS模块化,可能大家就没有这么清晰了。大部分人都会重点关注JS而忽略CSS,但CSS也是前端三剑客不可或缺的一部分,在编写CSS的时候,绝大多数人都是比较随意的,所以会经常造成一些开发痛点。接下来这篇文章我们就来简单聊一聊 CSS 模块化。
isboyjc
2022/03/28
7800
「前端工程四部曲」模块化的前世今生(下)
css-in-js 探讨
Web开发是需要掌握多种技术。我们习惯于与多种语言密切合作。而且,随着开发Web应用程序变得越来越普遍和差别细微化,我们经常寻找创造性的方法来弥合这些语言之间的差距,从而使我们的开发环境和工作流程更容易,更高效。
frontoldman
2019/09/03
5.8K0
CSS技术入门
CSS (Cascading Style Sheets) 其实并不是编程语言,CSS可以直接运行在浏览器中,浏览器就是它们的运行环境,CSS 中文名为层叠样式表,也就是一些样式的配置。
码之有理
2023/02/13
3.1K0
解锁网页设计新境界:一文掌握Tailwind CSS
Tailwind CSS是一个高度可定制的实用工具优先的CSS框架,它提供了构建网站界面的底层CSS类,使得开发者可以通过组合这些类来快速构建出独特的设计。与传统的CSS框架(如Bootstrap或Foundation)不同,Tailwind不提供预设计的组件,而是提供原子化的、可复用的工具类,使得你可以按照自己的设计轻松地创建界面,而不必覆盖大量预设样式。
一个程序猿的异常
2024/03/18
1.2K0
解锁网页设计新境界:一文掌握Tailwind CSS
Tailwind CSS那些事儿
在回望过去,展望未来- 2024 React 生态一览表中讲到CSS时,我们提到过Tailwind CSS,并且也说会有相关的文章。
前端柒八九
2023/11/17
8580
Tailwind CSS那些事儿
【总结】1832- 一步步从 CSS Modules 切换到 Tailwind CSS
https://juejin.cn/post/7237425753612288055
pingan8787
2023/10/18
4960
【总结】1832- 一步步从 CSS Modules 切换到 Tailwind CSS
从自身开发体验谈谈Tailwind CSS
TailWind CSS 是最近两年比较火的一个原子类CSS框架,截止目前在GitHub的Star达到了接近60k,在npm上每周的下载量也超过了3600k。
用户6256742
2024/07/11
3180
从自身开发体验谈谈Tailwind CSS
Tailwind CSS 导论
Tailwind CSS 导论博主介绍了Tailwind CSS这款效用优先的CSS框架。通过组合预定义的class来直接在HTML中构建任何设计。博主以一个卡片UI的例子对Tailwind CSS进行了解释,比较了使用Tailwind CSS和不使用Tailwind CSS的代码量差异。使用Tailwind CSS可以通过简洁的class描述HTML样式,从而减少代码量和提高开发速度。博主还阐述了Tailwind CSS在样式重置和快速样式实现方面的优势。最后,博主提到Tailwind CSS适合使用组件化HTML框架的开发者和需要快速开发的开发者。推荐读者前往Tailwind CSS文档了解更多信息。
HikariLan贺兰星辰
2023/10/18
2520
相关推荐
技术天地 | CSS-in-JS:一个充满争议的技术方案
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档