原子CSS引擎——unocss

点击上方 前端Q,关注公众号

回复加群,加入前端Q技术交流群

9f680975a4cd8f7c3da8b0124483df68.png

什么是unocss

  • unocss是一个即时的原子CSS引擎,它可以让你用简短的类名来控制元素的样式,而不需要写复杂的CSS代码。

  • 当然,原子样式也有很多选择,最著名的就是 Tailwind。但由于Tailwind 会生成大量样式定义,会导致全量的 CSS 文件往往体积会多至数 MB,从而有性能上有一些不足

扩展:什么是原子化

原子化CSS是一种CSS架构方式,其支持小型、单一用途的类,其名称基于视觉功能。

更加通俗的来讲,原子化CSS是一种新的CSS编程思路,它倾向于创建小巧且单一用途的class,并且以视觉效果进行命名。

unocss的优点

  • 它可以让你快速地开发和原型设计,而不需要考虑CSS的细节。

  • 它可以让你的CSS文件更小,因为它只生成你用到的工具类。

  • 它可以让你的CSS更一致,因为它遵循一套预设的规则和变量。

  • 它可以让你的CSS更灵活,因为它支持自定义工具类,变体,指令和图标。

  • 它可以让你的CSS更易于维护,因为它避免了样式冲突和重复代码。

项目中使用 unocss

参考 官方文档Vite配置,webpack 往下翻即可

https://unocss.dev/integrations/vite

安装

npm install -D unocss

打包配置

vite配置

// vite.config.js
import UnoCSS from 'unocss/vite'
import { defineConfig } from 'vite'

export default defineConfig({
  plugins: [
    UnoCSS(),
  ],
})

webpack5中配置

// webpack.config.js
const UnoCSS = require('@unocss/webpack').default

module.exports = {
  plugins: [
    UnoCSS(),
  ],
  optimization: {
    realContentHash: true,
  },
}

webopack4中配置

// webpack.config.js
const UnoCSS = require('@unocss/webpack').default

module.exports = {
  plugins: [
    UnoCSS(),
  ],
  css: {
    extract: {
      filename: '[name].[hash:9].css',
    },
  },
}

创建一个`uno.config.ts 配置文件

  • 用于编写用户想要的 unocss 配置

// uno.config.js
import { defineConfig } from 'unocss'

export default defineConfig({
  // ...UnoCSS options
})

全局引入

// main.js
import 'virtual:uno.css';

常见用法

  • 对应刚入手 unocss 的同学来说,规则怎么写是不知道的,但不用着急,官方(大佬 antfu)给出了 交互式文档,输入你想要的css样式,就可以获得对应的class名称

https://www.tailwindcss.cn/docs/font-family(中文文档)

https://unocss.dev/interactive/(官方文档)

1c7fdad57b66b061e6ab0816730568c4.png
选择对应的css样式

常见基础用法

unocss支持用预设单位(预设单位是rem),也可以自定义单位

04290076ddf7e1d77c03fbafa9577d07.png

自定义规则

  • 在vscode中我们都会有用到快捷键一键生成代码,unocss也不例外,假如你有个盒子,里面的内容需要垂直居中,那么就可以定义为:

export default defineConfig({
  shortcuts: [
   {'flex-center': 'flex items-center justify-center',}, // 静态快捷方式,是一个对象,可配多个
  ]
})
  • 当然,也可以精选 动态配置快捷方式

export default defineConfig({
 shortcuts: [
    [/^base-border-(.*)$/, match => `border-1 border-style-dashed border-${match[1]}`], // 动态快捷方式,一个配置为一个数组
  ]
})

安装vscode插件

8c4fb241067bdd3229b605bcae0af6c5.png
  • 安装启用后,页面上就能看出哪些 class 使用 unocss 提供 (带有虚线),并且能显示类名对应的样式内容,如下:049680d6083d63b171702db65511a00d.png

好啦,今天的分享就到这里,希望能帮助到大家,大家也不要吝啬你们的赞哟。

0ec5076ad7d40ae0fb5d73db2cc229fb.png

往期推荐

工作了5年你居然不知道版本号有这些规范?

88dec04e47e234a0865606df42861471.png

如何写一个属于自己的Vue3组件库

67100bd7c717cd8fb53ca79aa60cb4da.png

打爆React泡沫,重新审视前端技术选择

26a0384b44912a94d1dd1059f21d0881.png


最后

  • 欢迎加我微信,拉你进技术群,长期交流学习...

  • 欢迎关注「前端Q」,认真学前端,做个专业的技术人...

5eb7e94975b83d434ca8569862f9ef13.jpeg

22ee7423d508b605063156d3cb6981d6.png

点个在看支持我吧

efa741a4faf6f5b490c3ba92e8964278.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值