首页 文章 精选 留言 我的

精选列表

搜索[独立开发者],共10000篇文章
优秀的个人博客,低调大师

开发者弃用 Tailwind 之后,重新学习使用 CSS

八年前,Julia Evans 曾热情洋溢地写文章介绍她刚发现 Tailwind 的喜悦。当时她完全不知道如何组织 CSS 代码,在"一团乱麻"和"Tailwind"之间,她毫不犹豫地选择了后者。Tailwind 帮助她搭建了大量小型网站。 八年后,她用了大约一周时间把几个网站从 Tailwind 迁移到更语义化的 HTML + 原生 CSS,并记录下了这个过程中学到的东西。 Tailwind 教给她的,其实比想象多 刚开始考虑如何组织 CSS 时,她其实有些畏惧:"我不擅长组织 CSS!"但读了几篇关于如何组织 CSS 的博客文章后(包括"A whole cascade of layers"和"How I write CSS in 2024"),她意识到:每个 CSS 代码库其实都有多件不同的事情在同时发生——布局、字体、颜色、通用组件……有一套系统或指南来管理这些是非常有用的,而 Tailwind 已经提供了一些这样的系统。区别只在于,现在她可以模仿这些系统,而不是被它们束缚。 她从 Tailwind 借鉴了以下系统:reset 样式表、色彩调色板、字体大小阶梯。 CSS 重建的九大方面 Reset 她直接复制了 Tailwind 的 preflight 样式(大约前 200 行)。比如 Tailwind 对所有元素设置 box-sizing: border-box(元素宽度包含 padding)。她意识到,离开这些规则后会很不习惯。 组件 核心思路是用类似 Vue/React 组件的方式组织 CSS:每个组件有唯一的类名,组件 CSS 不会覆盖其他组件的样式,每个组件有自己的 CSS 文件。编辑一个组件的 CSS 时不会意外破坏另一个组件。这种方式让她可以只专注于 100 行代码,而不是整个代码库。 颜色 colours.css 文件中列出所有 CSS 变量作为调色板。规则是:网站上使用的所有颜色都必须在这个文件里定义。 字体大小 Tailwind 的 font scale 让她可以不用纠结于 rem、em 或 px,只要想着"我要大字"然后写 text-lg 就好。她从 Tailwind 借鉴了变量定义方式,比如 --size-lg、--line-height-lg,然后在需要的地方引用。 工具类 一些在多个组件中出现的样式(如 .sr-only 用于屏幕阅读器专用内容)被她称为"工具类"。她从 Tailwind 复制了一部分,并谨慎地维护这个区域。 基础样式 "基础"样式是整个站点都适用的全局样式。目前她只设置了两条:section 的内列宽度,以及 a 标签的颜色。 间距 她正在尝试让外层布局组件负责间距,而不是到处随手加 margin 和 padding。比如用 section > + { margin-top: 1rem; } 来均匀分布子元素。参考了"猫头鹰选择器"和"no outer margin"等理念。 响应式布局:多用 Grid 以前在 Tailwind 里做响应式靠大量媒体查询。现在她尝试用更灵活的 CSS Grid 布局来减少断点。她大量使用了 auto-fit 来自动实现大屏双列、小屏单列的布局,以及 grid-template-areas——这是 Tailwind 无法做到的事情。 构建系统:esbuild 开发环境不需要构建系统,因为现代 CSS 支持 @import 和嵌套选择器。生产环境用 esbuild 打包,因为它是基于 Web 标准且静态的 Go 二进制文件。 为什么离开 Tailwind 几个原因促使她做出这个决定:Tailwind 自 2018 年以来对构建系统的依赖越来越强,她一直在用 Tailwind v2,导致项目中存在 2.8MB 的 tailwind.min.css 文件( gzip 后 270K),这让她觉得有点可笑;她的 CSS 能力已经比刚开始用 Tailwind 时强很多,不想再被框架的边界限制;最后,她在项目中混用了原生 CSS 和 Tailwind,维护起来非常痛苦。 她坦承 Tailwind 的限制有时是非常有用的——这篇文章大量内容就是在重新实现 Tailwind 的那些限制。但到了某个阶段,她希望能够自己选择什么时候用框架、什么时候跳出框架。 "CSS 很难,因为它在解决一个很难的问题" 关于 CSS,她还提到了另一件事:她曾经对 CSS 持一种类似"CSS 是简单的,所以它应该容易"的态度,但经过十年学习,她真正爱上了 CSS 并尊重它。把"CSS 很困难"当作学习它的动力,让她发现许多沮丧("居中是不可能的")其实早在 CSS 中早就解决了。CSS 的难度来自于它在解决一个困难的问题。 参考来源https://jvns.ca/blog/2026/05/15/moving-away-from-tailwind--and-learning-to-structure-my-css-/

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册