我的方案
目前(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 的开源组件库可以给一些实现参考:
轻量使用
Basscss 和 Tachyons 是不错的轻量 CSS 框架。它并不像 Bootstrap 一样,要求你整套都用它的,而是你需要的地方用一下就好;就像 helper function 和 framework 之间的区别。
Utilities
这类 CSS 框架并不提供组件和成套样式,但是提供了非常多的基础设施,方便你调布局、做效果等等。
tailwindcss 是这其中的典范。这篇 文章 描述它如何与 Next.js 整合。
整套方案
桌面端
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 个专家的 评测。