Open jiangjiu opened 1 year ago
Unocss是一个具有高性能且极具灵活性的即时原子化 CSS 引擎。可以通过预设等配置达到和 Tailwind/Windi 等原子化框架相同的行为。此外,uno具有性能更好,更灵活等优势,参考原子化CSS框架对比 在使用unocss来写原子化css之前,除了阅读unocss文档,同时建议阅读tailwindcss或windicss的文档,因为这两个框架文档更完善,从中能学习到原子化css的更多知识。 📖【unocss】Github Readme 📖【unocss】重新构想原子化 CSS 📖【tailwindcss】官方文档 📖【windicss】官方文档
基础目标:
vscode编译器提供了unocss的提示插件,安装后鼠标悬停在类名上会展示编译后的css代码。
但是,目前unocss插件还不支持预设类名的自动补全,按照这个issue讨论的方法,可以在项目中添加tailwind.config.js配置文件,再安装tailwindcss的插件,可以蹭一下tailwindcss的自动补全提示(因为unocss提供的预设是Tailwind / Windi CSS 的超集,所以一开始不熟悉预设类名有哪些时,可以去这俩框架的文档中查找并使用)。
tailwind.config.js这个配置文件是为了开发更便捷,与项目配置并无关系,目前没有加入到脚手架中,如果有需要可以自行引入。
import { defineConfig, presetUno, presetAttributify, } from 'unocss'; import transformerVariantGroup from '@unocss/transformer-variant-group'; import transformerCompileClass from '@unocss/transformer-compile-class'; export default defineConfig({ presets: [ presetAttributify(), // 启用属性化模式 presetUno(), // 启用常见框架的预设 ], transformers: [ transformerVariantGroup(), // 启用变体组合 transformerCompileClass(), // 启用类名压缩 ], // 主题扩展 theme: { fontFamily: { // 把用到的fontFamily放这里 'Barlow': 'Barlow Bold', 'FZLTCHJW': 'FZLTCHJW', }, colors: { 'yellow': { light: '#fffbd3', DEFAULT: '#fffacd', }, }, }, // 自定义层级顺序 layers: { 'my-layer': 10, default: 1, 'rules': -10, 'shortcuts': -20, }, // 自定义规则 rules: [ // 静态规则 ['r-bg-red', { background: '#ff0000' }], // 动态规则 [/^m-(\d+)$/, ([, d]) => ({ margin: `${d / 4}rem` }), {layer: 'my-layer'}], ], // 快捷样式组合 shortcuts: [ // 静态别名 { 'bg-common': 'bg-[length:100%] bg-no-repeat', 'flex-center': 'flex justify-center items-center', 'translate-center': 'left-50% top-50% translate--50%', }, // dynamic shortcuts [/^text-gradient-to-(.*)$/, ([, c]) => `bg-gradient-to-${c} bg-clip-text text-transparent`], ], });
通过配置可以扩展主题,你可以在配置中制定主题属性,制定的属性将被合并到默认主题中。 常见的width、height、colors、fontSize等均支持扩展主题(不是所有属性都支持,例如backgrounfSize不支持),更多主题属性参见文档:主题属性文档 theme: { // ... colors: { 'veryCool': '#0000ff', // 新增一个颜色 text-veryCool bg-veryCool 都可以应用该颜色 'red': { 500: '#fd9000', // 覆盖默认red-500的颜色 } }, } ⚠️注意 不是所有属性都支持扩展主题,例如backgrounfSize就不支持。所以实现background-size: 100% 需要[]。即: bg-[length:100%]
尽管预设提供了大部分常见的基础实用类名,但并不能满足更多复杂的样式和需求,可以使用rules自定义更多实用类名规则,简化css的使用。
相同layer的rule,后定义的优先级高,与使用时的顺序无关。
// 动态规则 // 自定义1/4margin值 [/^m-(\d+)$/, ([, d]) => ({ margin: ${d / 4}rem }), {layer: 'my-layer'}], // 自定义层级,若不声明layer默认值为'default' ]
${d / 4}rem
将复用度很高的实用类名进行组合,通过快捷别名进行使用。
bg-gradient-to-${c} bg-clip-text text-transparent
css生成顺序会影响其生效优先级,通过layer控制层级顺序。
unocss会将同一层级,相同内容的类名合并生成,以减小css体积。
!important > 内联样式 > 内部样式表 > 导入样式表 > unocss 若不自定义layer,unocss中各项优先级为:rules > 预设实用类名(utilities) > shortcuts
这个优先级是在哪里设置的,还是内部就是默认这样子了
介绍
Unocss是一个具有高性能且极具灵活性的即时原子化 CSS 引擎。可以通过预设等配置达到和 Tailwind/Windi 等原子化框架相同的行为。此外,uno具有性能更好,更灵活等优势,参考原子化CSS框架对比 在使用unocss来写原子化css之前,除了阅读unocss文档,同时建议阅读tailwindcss或windicss的文档,因为这两个框架文档更完善,从中能学习到原子化css的更多知识。 📖【unocss】Github Readme 📖【unocss】重新构想原子化 CSS 📖【tailwindcss】官方文档 📖【windicss】官方文档
目标
基础目标:
开发前准备
插件
vscode编译器提供了unocss的提示插件,安装后鼠标悬停在类名上会展示编译后的css代码。
但是,目前unocss插件还不支持预设类名的自动补全,按照这个issue讨论的方法,可以在项目中添加tailwind.config.js配置文件,再安装tailwindcss的插件,可以蹭一下tailwindcss的自动补全提示(因为unocss提供的预设是Tailwind / Windi CSS 的超集,所以一开始不熟悉预设类名有哪些时,可以去这俩框架的文档中查找并使用)。
tailwind.config.js这个配置文件是为了开发更便捷,与项目配置并无关系,目前没有加入到脚手架中,如果有需要可以自行引入。
配置文件
配置项介绍
theme
通过配置可以扩展主题,你可以在配置中制定主题属性,制定的属性将被合并到默认主题中。 常见的width、height、colors、fontSize等均支持扩展主题(不是所有属性都支持,例如backgrounfSize不支持),更多主题属性参见文档:主题属性文档 theme: { // ... colors: { 'veryCool': '#0000ff', // 新增一个颜色 text-veryCool bg-veryCool 都可以应用该颜色 'red': { 500: '#fd9000', // 覆盖默认red-500的颜色 } }, } ⚠️注意 不是所有属性都支持扩展主题,例如backgrounfSize就不支持。所以实现background-size: 100% 需要[]。即: bg-[length:100%]
rules
尽管预设提供了大部分常见的基础实用类名,但并不能满足更多复杂的样式和需求,可以使用rules自定义更多实用类名规则,简化css的使用。
相同layer的rule,后定义的优先级高,与使用时的顺序无关。
// 动态规则 // 自定义1/4margin值 [/^m-(\d+)$/, ([, d]) => ({ margin:
${d / 4}rem
}), {layer: 'my-layer'}], // 自定义层级,若不声明layer默认值为'default' ]shortcuts
将复用度很高的实用类名进行组合,通过快捷别名进行使用。
bg-gradient-to-${c} bg-clip-text text-transparent
], ]layers
css生成顺序会影响其生效优先级,通过layer控制层级顺序。
Rules Merging
unocss会将同一层级,相同内容的类名合并生成,以减小css体积。
各种css优先级
!important > 内联样式 > 内部样式表 > 导入样式表 > unocss 若不自定义layer,unocss中各项优先级为:rules > 预设实用类名(utilities) > shortcuts