vue3 【提效】使用 CSS 框架 UnoCSS 实用教程

news2024/11/25 6:55:28

该换种更高效的方式写 CSS 啦,举个例:

<div class="flex">
</div>

相当于

<div class="flex">
</div>
<style>
.flex {
  display: flex;
}
</style>

当然,还有超多强大的功能帮我们提升书写样式的效率,即刻开始吧!

使用流程

1. 安装 UnoCSS

npm i -D unocss

2. 添加到 vite 配置中

vite.config.ts

import UnoCSS from 'unocss/vite'

plugins 中添加

UnoCSS(),

3. main.ts 中导入

import 'virtual:uno.css'

4. 创建配置文件

项目目录下新建文件 uno.config.ts,内容为

import { defineConfig } from 'unocss'

export default defineConfig({
  // UnoCSS 的配置
})

后续使用 unocss 比较高级的功能时会用到。

5. vscode 安装 UnoCSS 扩展

在这里插入图片描述

  • 方便 UnoCSS 的快捷输入
  • 可以便捷查看最终样式

UnoCSS 功能详解

原子化 CSS

即本文开头演示的,用简单且功能单一的 class 来描述样式。

比如:让文字变成红色,并添加 10px 的外边距

<div class="text-red m-2.5">外边距为10px, 内部文字为红色</div>

vscode 安装了 UnoCSS 扩展后,鼠标悬浮到 class 上,可见 UnoCSS 的最终样式效果。

在这里插入图片描述
在 class 中输入空格,会触发输入提示

在这里插入图片描述
通过官网可查询样式写法
https://unocss.dev/interactive/
在这里插入图片描述

自定义 CSS

官方的样式写法使用不习惯? 可以自己定义!

uno.config.ts 中添加 rules 即可

import { defineConfig } from 'unocss'

export default defineConfig({
  rules: [
    ['p-10', { padding: '10px' }],
    ['m-10', { margin: '10px' }]
  ]
})

在这里插入图片描述
但这样一个个定义太麻烦,快来使用正则表达式批量定义

rules: [[/^p-(\d+)$/, (match) => ({ padding: `${match[1]}px` })]]

从此,p- 后的数字是多少,就是多少 px 的内边距,如

在这里插入图片描述

快捷 CSS

比如一个绿色按钮的样式,需要多处使用,可以将其定义为 快捷 CSS

uno.config.ts 中添加 shortcuts 实现:

  shortcuts: {
    'btn-green': 'text-white bg-green-500 hover:bg-green-700'
  },

页面中使用

<button class="btn-green">保存</button>

效果如下
在这里插入图片描述
同样支持正则的写法实现批量定义,如

shortcuts: [
  // you could still have object style
  {
    btn: 'py-2 px-4 font-semibold rounded-lg shadow-md',
  },
  // dynamic shortcuts
  [/^btn-(.*)$/, ([, c]) => `bg-${c}-400 text-${c}-100 py-2 px-4 rounded-lg`],
]

使用

  <div class="p-20 flex w-xs justify-around">
    <button class="btn-green">保存</button>
    <button class="btn-red">删除</button>
  </div>

效果

在这里插入图片描述

在 CSS 中使用 UnoCSS

需先修改配置文件 uno.config.ts (改动部分,见下方代码中的注释)

import { defineConfig } from 'unocss'
// 导入 transformerDirectives
import { transformerDirectives } from 'unocss'

export default defineConfig({
  // 使用 transformerDirectives
  transformers: [transformerDirectives()]
})

使用方法: 在 --at-apply 中写 UnoCSS 即可。

.box {
  --at-apply: p-20 flex justify-around;
  background-color: green;
}

更多用法详见官网

https://unocss.dev/guide/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1872387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL事务:ACID特性的实现原理

事务是MySQL等关系型数据库区别于NoSQL的重要方面&#xff0c;是保证数据一致性的重要手段。本文将首先介绍MySQL事务相关的基础概念&#xff0c;然后介绍事务的ACID特性&#xff0c;并分析其实现原理。 一、基础概念 事务&#xff08;Transaction&#xff09;是访问和更新数…

大数据之FlinkCDC

最近在做FLinkCDC数据实时同步的数据抽取处理 目标: 将源端系统Oracle数据库的实时数据通过FLINKCDC的形式抽取到Doris中 问题: 在抽取的过程中,如果表的数据量太大,抽取超过30张表以后,所有的任务大概运行25~30分钟以后,所有的任务的状态会从running 变为 Failed. 解决方案…

RAG开发中常见的12个痛点及解决方案

受到 Barnett 等人论文《构建检索增强生成系统的七大挑战》启发&#xff0c;本文将探讨论文中提及的七大挑战及在开发 RAG&#xff08;检索增强生成&#xff09;流程中常遇到的五个额外难题。更为重要的是&#xff0c;我们将深入讨论解决这些 RAG 难题的策略&#xff0c;以便我…

综合IT运维管理解决方案

综合IT运维管理解决方案 在信息化和数字化高速发展的时代&#xff0c;企业的IT运维管理已经成为保障业务连续性和提升运营效率的关键环节。高效的IT运维管理不仅能够降低运维成本&#xff0c;还能提升服务质量和用户满意度。本文将详细介绍综合IT运维管理解决方案&#xff0c;…

照明物联网:基于网关的智能照明云监控系统解决方案

智能照明系统就是利用物联网技术&#xff0c;将同一空间的照明、空调、新风、排风等系统共同接入物联网平台&#xff0c;实现了“设备互联、数据互通”的智慧物联能力。照明数据、环境监测数据通过网关上传云端&#xff0c;在云端进行统计分析并将结果通过各种终端共享&#xf…

【资源】太绝了!整整16本Python必看书籍详细讲解,适合零基础小白,高清电子版PDF开放下载,带你从入门到入土~

小编为初学Python的朋友们汇总了16本零基础入门书籍&#xff0c;包括Python三剑客等&#xff0c;都是在编程届多年畅销的书籍&#xff0c;也是众多从业者的选择&#xff0c;全文详细介绍了书籍主要内容&#xff0c;有需要的宝子根据自身情况自取 【教程领取方式在文末&#xff…

江科大笔记—FLASH闪存

FLASH闪存 程序现象&#xff1a; 1、读写内部FLASH 这个代码的目的&#xff0c;就是利用内部flash程序存储器的剩余空间&#xff0c;来存储一些掉电不丢失的参数。所以这里的程序是按下K1变换一下测试数据&#xff0c;然后存储到内部FLASH&#xff0c;按下K2把所有参数清0&…

理解MySQL核心技术:外键的概念作用和应用实例

引言 在数据库管理系统&#xff08;DBMS&#xff09;中&#xff0c;外键&#xff08;Foreign Key&#xff09;是维持数据一致性和实现数据完整性的重要工具。本文将详细介绍MySQL外键的基本概念、作用&#xff0c;以及相关的操作指南和应用实例&#xff0c;帮助读者掌握并灵活…

module java.base does not “opens java.lang“ to unnamed module

目录 原因&#xff1a;解决方法&#xff1a;方法一&#xff1a;方法二&#xff1a;方法三&#xff1a; SpringBoot项目运行报如下错误 Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make protected final java.lang.Class java.lang.ClassLoader.def…

兴趣爱好广泛的人,如何填报高考志愿选专业?

一般来说&#xff0c;高考填报志愿都要以自己的兴趣为基础。但是对于有一些比较优秀的同学来说&#xff0c;自己的兴趣可能是非常广&#xff0c;涉及到各个专业方方面面。有些同学琴棋书画样样精通&#xff0c;对于很多的专业&#xff0c;他们都充满了兴趣&#xff0c;而且兴趣…

【机器学习】高斯混合模型(Gaussian Mixture Models, GMM)深度解析

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 高斯混合模型&#xff08;Gaussian Mixture Models, GMM&#xff09;深度解析引…

模拟实现string【C++】

文章目录 全部的实现代码放在了文章末尾准备工作包含头文件定义命名空间和类类的成员变量 构造函数默认构造拷贝构造 重载赋值拷贝函数析构函数迭代器和获取迭代器迭代器获取迭代器 resize【调整size】图解 reserve【调整capacity】empty【判断串是否为空】operator[]appendpus…

Stablediffusion SD最好用的图片放大方法 无损4K,8K放大 TILED

Tiled Diffusion Tiled VAE ControlNet Tile模型 只有图生图才能使用Tiled放大倍数。文生图没有放大倍数选项但是可以使用覆盖图像尺寸直接更改尺寸。&#xff08;文生图不容易控制&#xff0c;不如图生图&#xff09; 【采用接力的方法进行放大&#xff1a;先文生图高清修复…

ONLYOFFICE 8.1版本桌面编辑器测评:重塑办公效率的巅峰之作

在数字化办公日益普及的今天&#xff0c;一款高效、便捷且功能强大的桌面编辑器成为了职场人士不可或缺的工具。ONLYOFFICE 8.1版本桌面编辑器凭借其卓越的性能和丰富的功能&#xff0c;成功吸引了众多用户的目光。今天&#xff0c;我们将对ONLYOFFICE 8.1版本桌面编辑器进行全…

Ansys Zemax|在设计抬头显示器(HUD)时需要使用哪些工具?

附件下载 联系工作人员获取附件 汽车抬头显示器或汽车平视显示器&#xff0c;也被称为HUD&#xff0c;是在汽车中显示数据的透明显示器&#xff0c;不需要用户低头就能看到他们需要的重要资讯。这个名字的由来是由于该技术能够让飞行员在头部“向上”并向前看的情况下查看信息…

现如今软考通过率真的很低吗?

刚开始机考&#xff0c;10个人中有3个人表示想要尝试考试&#xff0c;这样通过率能高吗&#xff1f;就拿PMP证书来说吧&#xff0c;一下子就得花费三千多块&#xff0c;有几个人会轻易去尝试呢&#xff1f; 说到底&#xff0c;考试的难度是一个方面&#xff0c;考试的成本低是…

基于边缘智能的沉浸式元宇宙关键技术与展望

源自&#xff1a;大数据 作者&#xff1a;王智 夏树涛 毛睿 注&#xff1a;若出现无法显示完全的情况&#xff0c;可 V 搜索“人工智能技术与咨询”查看完整文章 摘 要 近年来&#xff0c;360度视频、增强现实、虚拟现实等应用蓬勃发展&#xff0c;并逐渐形成元宇宙沉浸…

大模型推理知识总结

一、大模型推理概念 大多数流行的only-decode LLM&#xff08;例如 GPT-3&#xff09;都是针对因果建模目标进行预训练的&#xff0c;本质上是作为下一个词预测器。这些 LLM 将一系列tokens作为输入&#xff0c;并自回归生成后续tokens&#xff0c;直到满足停止条件&#xff0…

瑜伽健身舞蹈教育辅导班培训约课扣课消课课时项目排课管理系统

瑜伽健身舞蹈教育辅导班培训约课扣课消课课时项目排课管理系统 &#x1f31f; 引言&#xff1a;为什么我们需要一个高效的管理系统&#xff1f; 在瑜伽、健身、舞蹈等教育辅导班培训领域&#xff0c;课程的安排、学员的约课、扣课以及消课等管理事务繁琐且重要。传统的人工管理…

Windows kubectl终端日志聚合(wsl+ubuntu+cmder+kubetail)

Windows kubectl终端日志聚合 一、kubectl终端日志聚合二、windows安装ubuntu子系统1. 启用wsl支持2. 安装所选的 Linux 分发版 三、ubuntu安装kubetail四、配置cmder五、使用 一、kubectl终端日志聚合 k8s在实际部署时&#xff0c;一般都会采用多pod方式&#xff0c;这种情况下…