什么是css原子化
CSS原子化的优缺点
- 减少了css体积,提高了css复用
 
- 减少了起名的复杂度
 
- 增加了记忆成本,将css拆分为原子后,开发者必须记住一些class才能书写,即使类似tailwindcss提供了完善的工具链,开发者写background,也要记住开头是bg
 
项目接入unocss
tips:最好用于vite项目中,webpack搭建的项目中unocss属于阉割版功能很少
安装
vite.config.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
   | 
 
 
 
 
 
  import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import vueJsx from '@vitejs/plugin-vue-jsx'; import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' import unocss from 'unocss/vite'
 
  export default defineConfig({   plugins: [     vue(),     vueJsx(),     AutoImport({       resolvers: [ElementPlusResolver()],     }),     Components({       resolvers: [ElementPlusResolver()],     }),     unocss({       rules: []     })] })
 
 
  | 
 
main.ts引入
配置静态css
1 2 3
   | rules: [   ['test', { color: 'pink' }]  ]
   | 
 
全局任意组件内使用class类名test都可生效
使用正则表达式配置动态css
1 2 3
   | rules: [   [/^m-(\d+)$/, ([, d]) => ({ margin: `${Number(d) * 10}px` })]  ]
   | 
 
shortcuts可以自定义组合样式
1 2 3 4 5 6 7 8 9 10
   | plugins: [vue(), vueJsx(), unocss({   rules: [     [/^m-(\d+)$/, ([, d]) => ({ margin: `${Number(d) * 10}px` })],     ['flex', { display: "flex" }],     ['test', { color: 'pink' }]   ],   shortcuts: {     btn: "test flex"   } })],
  | 
 
unocss预设
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
   | import { presetIcons, presetAttributify, presetUno } from 'unocss'
  export default defineConfig({   plugins: [     vue(),     vueJsx(),     AutoImport({       resolvers: [ElementPlusResolver()],     }),     Components({       resolvers: [ElementPlusResolver()],     }),     unocss({       presets: [presetIcons(), presetAttributify(), presetUno()],        rules: [         ['test', { color: 'pink' }],          ['font', { color: 'yellowgreen' }]       ]     })],   resolve: {     alias: {       '@': '/src'      }   } })
  | 
 
presetIcons Icon图标预设
图标集合安装,首先去icones官网选择一套需要的icon
看清url后缀,安装对应的图标库
1
   | pnpm i -D @iconify-json/material-symbols
   | 
 
标签中直接使用类名即可
 
presetAttributify 属性化模式支持
属性语义化,无需class样式即可生效
 
presetUno 工具类预设
默认的 @unocss/preset-uno 预设(实验阶段)是一系列流行的原子化框架的 通用超集,包括了 Tailwind CSS,Windi CSS,Bootstrap,Tachyons 等。
例如,ml-3(Tailwind),ms-2(Bootstrap),ma4(Tachyons),mt-10px(Windi CSS)均会生效。