UnoCSS常用类名
大约 4 分钟
UnoCSS 是一个即时的原子化 CSS 引擎,旨在灵活和可扩展。核心是不拘一格的,所有的 CSS 工具类都是通过预设提供的。再也不用为了取一个 class name 类名而烦恼了。
开发者必备
- UnoCSS 在线查找工具
- VSCode 插件 UnoCSS
UnoCSS 特点
- 完全可定制:无核心工具,所有功能都通过预设提供
- 即时的:无解析、无抽象语法树、无扫描。它比 Windi CSS 或 Tailwind JIT 快5倍
- 轻量级的:零依赖且适用于浏览器:~6kb min+brotli
- 丰富的集成能力:对Vite、Webpack、PostCSS、CLI、VS Code、ESLint等工具的一流支持
- 快捷方式:通过别名或动态分组实现工具类
- 属性化模式:在属性中对工具类进行分组
- 纯 CSS 图标:将任何图标作为单个类使用
- 变体组:使用常见前缀的组合工具类的速记方式
- CSS 指令:使用 @apply 指令在 CSS 中重用工具类
- 编译模式:在构建时将多个类合成为一个类
- 检查器:交互式检查和调试
- CDN 运行时构建:只需一行 CDN 引入即可使用 UnoCSS
安装
- 安装 UnoCSS
npm
npm install unocss -dev
pnpm
pnpm add -D unocss
yarn
yarn add -D unocss
- 在
vite.config.js中配置
// vite.config.ts
import UnoCSS from 'unocss/vite'
import { defineConfig } from 'vite'
export default defineConfig({
plugins: [
UnoCSS()
]
})
- 创建一个
uno.config.ts配置文件:
// uno.config.ts
import { defineConfig } from 'unocss'
export default defineConfig({
// ...UnoCSS选项
})
- 在
main.ts中引入
// main.js
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import App from '@/App.vue'
import router from '@/router'
import 'unocss/themes/solid.css'
// ...
createApp(App)
.use(createPinia())
.use(router)
.mount('#app')
使用
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;w-[calc(100%-100px)]:width: calc(100% - 100px)
<div class="min-h-100px w-50vw"></div>
<!--等价于-->
<div style="min-height: 100px; width: 50vw;"></div>
2、background
<div class="bg-#f00"></div>
<!--等价于-->
<div style="background-color: #f00"></div>
3、font、text-align
<div class="text-center font-700 text-#f00 text-20px"></div>
<!--等价于-->
<div style="text-align: center; font-weight: 700; color: #f00; font-size: 20px;"></div>
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%;
<div class="b-1 b-solid b-#f00 b-rd-6px"></div>
<!--等价于-->
<div style="border: 1px solid #f00; border-radius: 6px;"></div>
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;
<div class="m-10px p-10px"></div>
<!--等价于-->
<div style="margin: 10px; padding: 10px;"></div>
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;gap-24px:gap-24px
<div class="flex flex-row justify-between items-center"></div>
<!--等价于-->
<div style="display: flex; flex-direction: row; justify-content: space-between; align-items: center;"></div>
7、overflow
常用值:
overflow-hidden:overflow: hidden;overflow-auto:overflow: auto;overflow-scroll:overflow: scroll;overflow-x-auto:overflow-x: auto;
<div class="min-h-100px max-h-60vh w-100% overflow-y-scroll"></div>
<!--等价于-->
<div style="min-height: 100px; max-height: 60vh; width: 100%; overflow-y: scroll;"></div>
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;fixed-center
<div class="absolute left-0 top-5px z-100"></div>
<!--等价于-->
<div style="position: absolute; left: 0; top: 5px; z-index: 100;"></div>
9、hover、focus、active、first、last
常用值:
hover-block:display: block;hover-text-pink:color: pink;
<div class="last-hover-text-pink"></div>
<!--等价于-->
<style>
.last-hover-text-pink:hover:last-child {
--un-text-opacity: 1;
color: rgba(244, 114, 182, var(--un-text-opacity));
}
</style>
10、display
常用值:
block:display: block;inline-block:display: inline-block;flex:display: flex;hidden:display: none;
<div class="flex"></div>
<!--等价于-->
<div style="display: flex;"></div>
11、important
<div class="!-text-20px"></div>
<!--等价于-->
<div style="font-size: 20px !important;"></div>
12、animate
常用值:
animate-spin:animation: spin 1s linear infiniteanimate-delay-500:animation-delay: 500ms
总结
UnoCSS 与 TailwindCSS 类似,但是它更加轻量级,使用体验更好,而且它的中文文档也很完善,可以说是 TailwindCSS 的一个很好的替代品。 尤其是 UnoCSS 的自定义 class name 类名功能,不用 [] 包裹,更加直观,例如:
<!-- 使用 TailwindCSS -->
<div class="w-[100px] h-[20vh]"></div>
<!-- 使用 UnoCSS -->
<div class="w-100px h-20vh"></div>