UnoCSS 原子化开发初体验

2023-12-12 07:12

本文主要是介绍UnoCSS 原子化开发初体验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

UnoCSS 是一个即时的原子化 CSS 引擎,旨在灵活和可扩展。核心是不拘一格的,所有的 CSS 工具类都是通过预设提供的。再也不用为了取一个 classname 类名而烦恼了。

UnoCSS 原子化

一、UnoCSS 特点

  1. 完全可定制:无核心工具,所有功能都通过预设提供
  2. 即时的:无解析、无抽象语法树、无扫描。它比 Windi CSS 或 Tailwind JIT 快5倍
  3. 轻量级的:零依赖且适用于浏览器:~6kb min+brotli
  4. 丰富的集成能力:对Vite、Webpack、PostCSS、CLI、VS Code、ESLint等工具的一流支持
  5. 快捷方式:通过别名或动态分组实现工具类
  6. 属性化模式:在属性中对工具类进行分组
  7. 纯 CSS 图标:将任何图标作为单个类使用
  8. 变体组:使用常见前缀的组合工具类的速记方式
  9. CSS 指令:使用 @apply 指令在 CSS 中重用工具类
  10. 编译模式:在构建时将多个类合成为一个类
  11. 检查器:交互式检查和调试
  12. CDN 运行时构建:只需一行 CDN 引入即可使用 UnoCSS

二、安装

这里以 Vue3 + Vite 为例

  1. 安装 unocss
pnpm add -D unocss
  1. vite.config.js 中配置
// vite.config.ts
import UnoCSS from 'unocss/vite'
import { defineConfig } from 'vite'export default defineConfig({plugins: [UnoCSS()]
})
  1. 创建一个 uno.config.jts 配置文件:
// uno.config.js
import { defineConfig } from 'unocss'export default defineConfig({// ...UnoCSS选项
})
  1. main.js 中引入
// main.jsimport { 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-0width: 0
  • w-1width: 0.25rem
  • h-100px: height: 100px
  • h--10px: height: -10px
  • h-full: height: 100%
  • min-w-screen: min-width: 100vw
<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-noneborder-radius: 0;
  • rounded-lborder-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-0margin: 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;
<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;
<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>

四、总结

UnoCSSTailwindCSS 类似,但是它更加轻量级,使用体验更好,而且它的中文文档也很完善,可以说是 TailwindCSS 的一个很好的替代品。
尤其是 UnoCSS 的自定义 classname 类名功能,不用 [] 包裹,更加直观,例如:

<!-- 使用 TailwindCSS -->
<div class="w-[100px] h-[20vh]"></div><!-- 使用 UnoCSS -->
<div class="w-100px h-20vh"></div>

参考文档

  • 英文:https://unocss.dev/
  • 中文:https://alfred-skyblue.github.io/unocss-docs-cn/
  • 样式查询:https://unocss.dev/interactive/

欢迎访问:天问博客

这篇关于UnoCSS 原子化开发初体验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/483708

相关文章

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

使用vscode搭建pywebview集成vue项目实践

《使用vscode搭建pywebview集成vue项目实践》:本文主要介绍使用vscode搭建pywebview集成vue项目实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录环境准备项目源码下载项目说明调试与生成可执行文件核心代码说明总结本节我们使用pythonpywebv

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

使用Python和Tkinter实现html标签去除工具

《使用Python和Tkinter实现html标签去除工具》本文介绍用Python和Tkinter开发的HTML标签去除工具,支持去除HTML标签、转义实体并输出纯文本,提供图形界面操作及复制功能,需... 目录html 标签去除工具功能介绍创作过程1. 技术选型2. 核心实现逻辑3. 用户体验增强如何运行

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录

CSS 样式表的四种应用方式及css注释的应用小结

《CSS样式表的四种应用方式及css注释的应用小结》:本文主要介绍了CSS样式表的四种应用方式及css注释的应用小结,本文通过实例代码给大家介绍的非常详细,详细内容请阅读本文,希望能对你有所帮助... 一、外部 css(推荐方式)定义:将 CSS 代码保存为独立的 .css 文件,通过 <link> 标签

使用Vue-ECharts实现数据可视化图表功能

《使用Vue-ECharts实现数据可视化图表功能》在前端开发中,经常会遇到需要展示数据可视化的需求,比如柱状图、折线图、饼图等,这类需求不仅要求我们准确地将数据呈现出来,还需要兼顾美观与交互体验,所... 目录前言为什么选择 vue-ECharts?1. 基于 ECharts,功能强大2. 更符合 Vue

Vue中插槽slot的使用示例详解

《Vue中插槽slot的使用示例详解》:本文主要介绍Vue中插槽slot的使用示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、插槽是什么二、插槽分类2.1 匿名插槽2.2 具名插槽2.3 作用域插槽三、插槽的基本使用3.1 匿名插槽

springboot+vue项目怎么解决跨域问题详解

《springboot+vue项目怎么解决跨域问题详解》:本文主要介绍springboot+vue项目怎么解决跨域问题的相关资料,包括前端代理、后端全局配置CORS、注解配置和Nginx反向代理,... 目录1. 前端代理(开发环境推荐)2. 后端全局配置 CORS(生产环境推荐)3. 后端注解配置(按接口