大约 15 年前,我在一家公司工作,我们为旅行社、机场工作人员和航空公司开发应用程序。我们还为 UI 组件和单页应用程序功能构建了自己的内部框架。 我们拥有适用于所有内容的组件:字段、按钮、选项卡、范围、数据表、菜单、日期选择器、选择和多选。我们甚至还有一个 div 组件。顺便说一句,我们的 div 组件非常棒,它允许我们在所有浏览器上实现圆角,无论你相信与否,这在当时并不是一件容易的事情。

我们的工作发生在我们历史上的某个时刻,当时 JS、Ajax 和动态 HTML 被视为一场带我们走向未来的革命。突然间,我们可以动态更新页面,从服务器获取数据,并避免导航到其他页面,这被认为是缓慢的,并且在两个页面之间的屏幕上闪烁一个大的白色矩形。 杰夫·阿特伍德(Jeff Atwood,StackOverflow 创始人)流行了这样一句话: “任何可以用 JavaScript 编写的应用程序最终都将用 JavaScript 编写。”—— Jeff Atwood

对于当时的我们来说,这感觉像是真正敢于去创建这些应用程序。感觉就像是对 JS 所做的一切都给予了全面认可。 所以我们所有的事情都用 JS 来做,我们并没有真正花时间去研究其他的做事方式。我们并没有真正感受到正确学习 HTML 和 CSS 功能的动力。我们并没有真正将网络视为一个完整的不断发展的应用程序平台。我们大多认为这是我们需要解决的问题,特别是在浏览器支持方面。我们可以投入更多的 JS 来完成任务。 花时间更多地了解网络的运作方式以及平台上的可用内容会对我有帮助吗?当然,我可能会删掉一堆并不真正需要的代码。但在当时,也许没有那么多。 你看,当时浏览器的差异非常显着。当时,Internet Explorer 仍然是占主导地位的浏览器,Firefox 紧随其后,但由于 Chrome 的迅速普及而开始失去市场份额。尽管Chrome和Firefox在网络标准上达成了一致,但我们的应用程序运行环境意味着我们必须长期支持IE6。即使我们被允许支持 IE8,我们仍然必须处理浏览器之间的许多差异。不仅如此,当时的网络还没有在平台中内置那么多功能。

快进到今天。事情发生了巨大的变化。我们不仅拥有比以往更多的这些功能,而且它们可用的速度也有所增加。 那么,让我再问一遍这个问题:今天花时间了解更多有关网络如何运作以及平台上提供的内容对您有帮助吗?绝对是的。今天学习理解和使用网络平台将使您比其他开发人员具有巨大的优势。 无论您是致力于性能、可访问性、响应能力,还是所有这些一起工作,或者只是交付 UI 功能,如果您想作为一名负责任的工程​​师来做到这一点,那么了解可用的工具可以帮助您更快更好地实现目标。 有些事情你可能不再需要图书馆了 了解了当今浏览器支持的内容后,问题是:我们可以放弃什么? 2025 年我们还需要一个 div 组件来做圆角吗?当然,我们不这样做。目前所有当前使用的浏览器都支持 border-radius 属性超过 15 年。拐角形状也即将推出,适用于更精美的拐角。 让我们看一下现在所有主要浏览器中都可用的相对较新的功能,您可以使用它们来替换代码库中的现有依赖项。 重点不是立即抛弃所有你喜爱的库并重写你的代码库。至于其他一切,您需要首先考虑浏览器支持,并根据项目特定的其他因素做出决定。以下功能在三个主要浏览器引擎(Chromium、WebKit 和 Gecko)中实现,但您可能有不同的浏览器支持要求,导致您无法立即使用它们。不过,现在仍然是了解这些功能并可能计划在某个时候使用它们的好时机。 弹出窗口和对话框 Popover API、

HTML 元素和 ::backdrop 伪元素可以帮助您摆脱对 popup 的依赖,工具提示和对话框库,例如 Floating UI、Tippy.js、Tether 或 React Tooltip。 它们开箱即用地为您处理可访问性和焦点管理,可以使用 CSS 进行高度自定义,并且可以轻松制作动画。 手风琴
元素、其互斥元素的 name 属性和 ::details-content 伪元素消除了对可折叠组件(如 Bootstrap Accordion 或 React Accordion 组件)的需求。 仅使用这里的平台意味着了解 HTML/CSS 的人可以更轻松地理解您的代码,而无需首先学习使用特定的库。这也意味着您不会受到库中的重大更改或该库的终止的影响。当然,这意味着需要下载和运行的代码更少。互斥的细节元素不需要 JS 来打开、关闭或设置动画。 CSS 语法 级联层,用于更有组织的CSS代码库,CSS嵌套,用于更紧凑的CSS,新的颜色函数,相对颜色和颜色混合,新的数学函数,如abs(),sign(),pow()等有助于减少对CSS预处理器,实用程序库(如Bootstrap和Tailwind)甚至运行时CSS-in-JS库的依赖。 游戏规则的改变者 :has() 是长期以来最受欢迎的功能之一,它消除了对更复杂的基于 JS 的解决方案的需要。 JS 实用程序 现代 Array 方法(如 findLast() 或 at())以及 Set 方法(如 Difference()、intersection()、union() 等)可以减少对 Lodash 等库的依赖。 容器查询 容器查询使 UI 组件能够响应除视口大小之外的其他内容,从而使它们在不同上下文中更具可重用性。 不再需要为此使用大量 JS 的 UI 库,也不需要使用 polyfill。 布局 网格、子网格、Flexbox 或多列已经存在很长时间了,但是看看 CSS 现状调查的结果,很明显开发人员在采用新事物时往往非常谨慎,并且要等待很长时间才能采用。 这些功能长期以来一直是 Baseline,您可以使用它们来摆脱对 Bootstrap 网格系统、Foundation Framework 的 Flexbox 实用程序、Bulma 固定网格、Materialize 网格或 Tailwind 列等内容的依赖。 我并不是说你应该放弃你的框架。您的团队采用它是有原因的,删除它可能是一个大项目。但是,看看网络平台在没有第三方包装器的情况下可以提供什么,会带来很多好处。 在不久的将来你可能不再需要的东西 现在,让我们快速浏览一下在不久的将来您将不需要图书馆的一些事情。也就是说,下面的内容还没有完全准备好大规模采用,但了解它们并为以后的潜在使用做好规划可能会有所帮助。 锚定位 CSS 锚点定位处理弹出窗口和工具提示相对于其他元素的定位,并负责将它们保持在视图中,即使在移动、滚动或调整页面大小时也是如此。 这是对前面提到的 Popover API 的一个很好的补充,这将使从性能密集型 JS 解决方案迁移变得更加容易。 导航API 导航 API 可用于处理单页应用程序中的导航,并且可能是 React Router、Next.js 路由或 Angular 路由任务的一个很好的补充,甚至是替代品。 视图转换 API View Transitions API 可以在页面的不同状态之间进行动画处理。在单页应用程序中,这使得状态之间的平滑过渡变得非常容易,并且可以帮助您摆脱动画库,例如 Anime.js、GSAP 或 Motion.dev。 更好的是,该 API 还可以用于多页面应用程序。 还记得之前我说过,我们在 15 年前工作的公司构建单页应用程序的原因是为了避免导航时页面重新加载的白色闪光吗?如果当时有这个 API,我们就能够实现漂亮的页面过渡效果,而不需要单页面框架,也不需要整个应用程序的大量初始下载。 滚动驱动的动画 滚动驱动的动画在用户的滚动位置上运行,而不是随着时间的推移运行,这使它们成为讲故事和产品游览的绝佳解决方案。 有些人用它有点过头了,但是如果使用得当,这可以是一个非常有效的设计工具,并且可以帮助摆脱像 ScrollReveal、GSAP Scroll 或哇.js。 可定制的选择 可自定义的选择是一个普通的

No spam. Join 138,000+ creators. Unsubscribe anytime.

Create Your Free Bio Page

Join 138,000+ creators on Seemless.

Get Started Free