UnoCSS 是一个即时的原子化 CSS 引擎,旨在灵活和可扩展。核心是不拘一格的,所有的 CSS 工具类都是通过预设提供的。再也不用为了取一个 classname 类名而烦恼了。
一、UnoCSS 特点
- 完全可定制:无核心工具,所有功能都通过预设提供
- 即时的:无解析、无抽象语法树、无扫描。它比 Windi CSS 或 Tailwind JIT 快5倍
- 轻量级的:零依赖且适用于浏览器:~6kb min+brotli
- 丰富的集成能力:对Vite、Webpack、PostCSS、CLI、VS Code、ESLint等工具的一流支持
- 快捷方式:通过别名或动态分组实现工具类
- 属性化模式:在属性中对工具类进行分组
- 纯 CSS 图标:将任何图标作为单个类使用
- 变体组:使用常见前缀的组合工具类的速记方式
- CSS 指令:使用 @apply 指令在 CSS 中重用工具类
- 编译模式:在构建时将多个类合成为一个类
- 检查器:交互式检查和调试
- CDN 运行时构建:只需一行 CDN 引入即可使用 UnoCSS
二、安装
这里以 Vue3 + Vite 为例
- 安装 unocss
| 1 |  | 
- 在 vite.config.js中配置
| 1 |  | 
- 创建一个 uno.config.jts配置文件:
| 1 |  | 
- 在 main.js中引入
| 1 |  | 
三、使用
1、width、height
常用值:
- w-0:- width: 0
- w-1:- width: 0.25rem
- h-100px:- height: 100px
- h--10px:- height: -10px
- h-full:- height: 100%
- min-w-screen:- min-width: 100vw
| 1 |  | 
2、background
| 1 |  | 
3、font、text-align
| 1 |  | 
4、border、border-radius
常用值:
- rounded-none:- border-radius: 0;
- rounded-l:- border-top-left-radius: 0.25rem; border-bottom-left-radius: 0.25rem;
- rounded-full:- border-radius: 9999px;
- border-0:- border-width: 0;
- b-0:- border-width: 0;
- b-1:- border-width: 1px;
- b-b-1:- border-bottom-width: 1px;
- b-solid:- border-style: solid;
- b-#f00:- border-color: #f00;
- b-rd:- border-radius: 0.25rem;
- b-rounded:- border-radius: 0.25rem;
- b-rd-6px:- border-radius: 6px;
- b-rd-full:- border-radius: 9999px;
- b-rd-50%:- border-radius: 50%;
| 1 |  | 
5、margin、padding
常用值:
- m-0:- margin: 0;
- mx-0:- margin-left: 0; margin-right: 0;
- py-10px:- padding-top: 10px; padding-bottom: 10px;
- p-10px:- padding: 10px;
- p--20px:- padding: -20px;
| 1 |  | 
6、flex
常用值:
- flex:- display: flex;
- flex-wrap:- flex-wrap: wrap;
- flex-row:- flex-direction: row;
- flex-col:- flex-direction: column;
- flex-justify-between:- justify-content: space-between;
- flex-justify-center:- justify-content: center;
- flex-items-center:- align-items: center;
| 1 |  | 
7、overflow
常用值:
- overflow-hidden:- overflow: hidden;
- overflow-auto:- overflow: auto;
- overflow-scroll:- overflow: scroll;
- overflow-x-auto:- overflow-x: auto;
| 1 |  | 
8、position
常用值:
- absolute:- position: absolute;
- position-absolute:- position: absolute;
- position-fixed:- position: fixed;
- position-relative:- position: relative;
- left-0:- left: 0;
- top-5px:- top: 5px;
- z-0:- z-index: 0;
- z-100:- z-index: 100;
| 1 |  | 
9、hover、focus、active、first、last
常用值:
- hover-block:- display: block;
- hover-text-pink:- color: pink;
| 1 |  | 
10、display
常用值:
- block:- display: block;
- inline-block:- display: inline-block;
- flex:- display: flex;
- hidden:- display: none;
| 1 |  | 
11、important
| 1 |  | 
12、Line Clamp 和 Ellipsis
多行文本超出(溢出)隐藏:
- line-clamp-none:
| 1 |  | 
- line-clamp-2:
| 1 |  | 
文本超出(溢出)省略:
- text-ellipsis:- text-overflow: ellipsis;
- text-clip:- text-overflow: clip;
- truncate:- overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
13、Text Wrap (文本换行)
- text-wrap:- text-wrap: wrap;
- text-nowrap:- text-wrap: nowrap;
- text-balance:- text-wrap: balance;
- text-pretty:- text-wrap: pretty;
14、Whitespace 和 Word Break
white-space
- whitespace-normal:- white-space: normal;
- whitespace-nowrap:- white-space: nowrap;
- whitespace-pre:- white-space: pre;
- whitespace-pre-line:- white-space: pre-line;
- whitespace-pre-wrap:- white-space: pre-wrap;
- whitespace-break-spaces:- white-space: break-spaces;
word-break
- break-normal:- overflow-wrap: normal; word-break: normal;
- break-words:- overflow-wrap: break-word;
- break-all:- word-break: break-all;
- break-keep:- word-break: keep-all;
四、总结
UnoCSS 与 TailwindCSS 类似,但是它更加轻量级,使用体验更好,而且它的中文文档也很完善,可以说是 TailwindCSS 的一个很好的替代品。
尤其是 UnoCSS 的自定义 classname 类名功能,不用 [] 包裹,更加直观,例如:
| 1 |  | 
参考文档
- 英文:https://unocss.dev/
- 中文:https://alfred-skyblue.github.io/unocss-docs-cn/
- 样式查询:https://unocss.dev/interactive/
相关文章
欢迎访问:天问博客
本文作者: Tiven
发布时间: 2023-09-09
最后更新: 2024-07-30
本文标题: UnoCSS 原子化开发初体验
本文链接: https://www.tiven.cn/p/7886fb00/
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明出处!
发布时间: 2023-09-09
最后更新: 2024-07-30
本文标题: UnoCSS 原子化开发初体验
本文链接: https://www.tiven.cn/p/7886fb00/
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明出处!


