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: 0w-1:width: 0.25remh-100px:height: 100pxh--10px:height: -10pxh-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 许可协议进行许可。转载请注明出处!


