Web UI Framework: Guidance

 21st May 2021 at 8:29am

我的方案

目前(2021 年 5 月)我的方案是:

对于框架,使用 Bulma 配合 Tailwind CSS。Bulma 作为主力,提供布局和各种组件。Tailwind CSS 只作为工具存在。配置时 Tailwind CSS 时,注意只使用它的 utilities 部分,而不使用 base 及 component。base 是个 CSS reset,component 提供了布局系统,这些都是 Bulma 已经做了的:

// tailwind.css
@tailwind utilities;

对于组件,Bulma 提供一些较基础的组件(比如表单、导航栏等)。对于更复杂的组件,比如付费服务中常有的 pricing section(不同价格套餐),这些 Bulma 没有覆盖到。这种更上层的 UI component 一般分为 application UI 和 marketing,看看 Tailwind UI 的组件分类就能理解。

我很喜欢 Tailwind UI 的设计风格,但它 价格不菲(150~250 刀),而且它并不是封装好的组件,更多地是在教你写 CSS(随便找一个例子的代码看看就明白了),或者你就用它的样式和结构不做修改。我本来幻想用了这些框架之后就不用怎么碰 CSS,但是后来感觉我的想法过于天真;如果做一个复杂一点的 application UI,大概率很多组件的样式还是得自己写。

另外我看了 Lunch Money 的 技术栈,它用的是 2018 年之后已经不再更新的 Semantic UI,再自己自定义了一些样式。我觉得我用 Bulma 也应该能实现。应该考虑重点问题重点解决,比如我不会做三栏界面,那么找相应的文章看懂三栏界面是怎么做的,同时可以模仿 Tailwind UI 的样式和配色。

这些 Tailwind CSS 的开源组件库可以给一些实现参考:

轻量使用

BasscssTachyons 是不错的轻量 CSS 框架。它并不像 Bootstrap 一样,要求你整套都用它的,而是你需要的地方用一下就好;就像 helper function 和 framework 之间的区别。

Utilities

这类 CSS 框架并不提供组件和成套样式,但是提供了非常多的基础设施,方便你调布局、做效果等等。

tailwindcss 是这其中的典范。这篇 文章 描述它如何与 Next.js 整合。

整套方案

桌面端

桌面端的框架往往是 responsive 的,有对应的移动端框架。但是看了一下 Ant Design 的移动端框架,感觉一般。其他的框架还没考察过。

Ant Design ★★★★★

Ant Design 是蚂蚁金服出品的一套设计语言加 React 组件,非常赞,值得一用。

Bulma ★★★★★

Bulma 看起来非常非常赞。

bootstrap ★★★★☆

  • bootstrap 是最流行的 CSS 框架。官网有一堆代码片段,直接拷贝就能用。
  • Flat UI 是非常漂亮的免费 Bootstrap 主题。
  • bootswatch 有一堆不同色调的免费主题。
  • wrapbootstrap 有一些更实用的主题,需要付费。

Foundation ★★★★★

Foundation 由一个设计公司 Zurb 出品,看起来丰富全面,用户群体也大。

Semantic UI ★★★★☆

Semantic UI 的主要特点是 CSS 标签语义化,看起来简单易懂。但是网上它的主题很少,感觉实际应用上的网站也不多,而且我有一次用起来感觉并不舒服,做不出想要的效果又不知道如何调试。

知乎上 有人认为 Semantic UI 没有形成统一规范,而且不够 responsive。

移动端

Framework7 ★★★★★

Framework7 (官网 | GitHub)看起来非常棒。

Material-UI ★★★☆☆

Material-UI 提供了一些基于 React 的组件。样式也似乎足够丰富。

Pure ★★★★☆

Pure 由雅虎出品,特点是足够简单又覆盖了常见的使用场景。

资源

GitHub 上有个 Design Essential 的 showcase,可能包含了一些足够好的库和工具用来做界面。

The State of CSS 2019 也是个不错的参考。

这里有一份来自 41 个专家的 评测