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/

歡迎訪問:天問博客

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/213794.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/213794.shtml
英文地址,請注明出處:http://en.pswp.cn/news/213794.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何公網訪問內網的群暉NAS隨時隨地遠程訪問本地存儲的學習資源

文章目錄 前言本教程解決的問題是&#xff1a;按照本教程方法操作后&#xff0c;達到的效果是前排提醒&#xff1a; 1. 搭建群暉虛擬機1.1 下載黑群暉文件vmvare虛擬機安裝包1.2 安裝VMware虛擬機&#xff1a;1.3 解壓黑群暉虛擬機文件1.4 虛擬機初始化1.5 沒有搜索到黑群暉的解…

成都工業學院Web技術基礎(WEB)實驗六:ECMAScript基礎語法

寫在前面 1、基于2022級計算機大類實驗指導書 2、代碼僅提供參考&#xff0c;前端變化比較大&#xff0c;按照要求&#xff0c;只能做到像&#xff0c;不能做到一模一樣 3、圖片和文字僅為示例&#xff0c;需要自行替換 4、如果代碼不滿足你的要求&#xff0c;請尋求其他的…

TwinCAT3 Modbus-TCP Client/Server使用

目錄 一、環境配置和準備 1、PLC中安裝TF6250-Modbus-TCP庫 2、勾選TF6250的license 3、PLC工程中添加Tc2_ModbusSrv庫文件 4、分別創建測試ModbusTCP測試的Server和Client程序 二、PLC作為Client端 1、設置測試電腦IP地址 2、運行MobusTCP測試工具 3、PLC端程序編寫 …

Hiera實戰:使用Hiera實現圖像分類任務(二)

文章目錄 訓練部分導入項目使用的庫設置隨機因子設置全局參數圖像預處理與增強讀取數據設置Loss設置模型設置優化器和學習率調整策略設置混合精度&#xff0c;DP多卡&#xff0c;EMA定義訓練和驗證函數訓練函數驗證函數調用訓練和驗證方法 運行以及結果查看測試完整的代碼 在上…

可學習超圖拉普拉斯算子代碼

python版本&#xff1a;3.6。sklearn版本&#xff1a;scikit-learn0.19 問題1&#xff1a;ERROR: Could not build wheels for ecos, scs, which is required to install pyproject.toml-based projects| 解決辦法&#xff1a;cvxpy安裝過程中遇到的坑_ecos 2.0.7.post1 cp37 …

大數據技術7:基于StarRocks統一OALP實時數倉

前言&#xff1a; 大家對StarRocks 的了解可能不及 ClickHouse或者是遠不及 ClickHouse 。但是大家可能聽說過 Doris &#xff0c;而 StarRocks 實際上原名叫做 Doris DB &#xff0c;他相當于是一個加強版的也就是一個 Doris ,也就是說 Doris 所有的功能 StarRocks 都是有的&a…

【設計模式--結構型--橋接模式】

設計模式--結構型--橋接模式 橋接&#xff08;Bridge&#xff09;模式定義結構案例好處使用場景 橋接&#xff08;Bridge&#xff09;模式 定義 將抽象與實現分離&#xff0c;使他們可以獨立變化。它是用組合關系代替繼承關系來實現&#xff0c;從而降低了抽象和實現這兩個維…

達夢 DM 數據庫

達夢數據庫 varchar varchar2的區別, 推薦使用 varchar2 -- 日期格式化 SELECT DATE_FORMAT(GETDATE(), %Y-%m-%d %H:%i:%s);-- 2023-12-11 SELECT CURDATE();-- 2023-12-11 09:22:24 SELECT SYSDATE();-- 2023-12-11 11:09:53.136527 SELECT GETDATE();-- 當前日期1 -1天 SEL…

MyEclipse中常用的快捷鍵大全

Eclipse的編輯功能非常強大&#xff0c;掌握了Eclipse快捷鍵功能&#xff0c;能夠大大提高開發效率。Eclipse中有如下一些和編輯相關的快捷鍵。 1. 【ALT/】 此快捷鍵為用戶編輯的好幫手&#xff0c;能為用戶提供內容的輔助&#xff0c;不要為記不全方法和屬性名稱犯愁…

vite+vue3實現動態路由

在做這個動態路由的時候踩了很多坑&#xff0c;其中大部分是粗心了 動態菜單主要是導入的方式 import.meta.glob 參考&#xff1a;功能 | Vite 官方中文文檔 1、多層路由渲染&#xff08;用3層路由做demo&#xff09; 拿到接口的數據是后臺直接處理好的結構&#xff0c;但是…

Lua腳本操作redis

模擬庫存扣減 基礎版 SpringBootTest class LuaTests {Resource(name"redisTemplate")ValueOperations<String,Long> valueOperations;AutowiredStringRedisTemplate stringRedisTemplate;final String priductKey "product.1";Testvoid test1()…

Java NIO, IO 整理

NIO: IO多路復用: 參考: Redis&#xff08;六&#xff09;單線程I/O多路復用模型淺析_單線程多路復用-CSDN博客 Java NIO 詳解_java nio詳解_開發菜雞的博客-CSDN博客 Java Socket 之 NIO - 掘金 答應我&#xff0c;這次搞懂 I/O 多路復用&#xff01;_小林coding的博客-CS…

Spring JdbcTemplate

一、簡介 Spring 框架對 JDBC 進行封裝&#xff0c;使用 JdbcTemplate 方便實現對數據庫操作。它是 spring 框架中提供的一個對象&#xff0c;是對原始 Jdbc API 對象的簡單封裝。spring 框架為我們提供了很多的操作模板類。 針對操作關系型數據&#xff1a; jdbcTemplateHibe…

A* 算法簡介

一、A* 算法簡介A* algorithm is a popular choice for graph search. Breadth First Search is the simplest of the graph search algorithms. Graph search algorithms, including A*, take a “graph” as input. A* algorithm is a modification of Dijkstra’s Algorithm…

華為OD機試 - 部門人力分配(Java JS Python C)

題目描述 部門在進行需求開發時需要進行人力安排。 當前部門需要完成 N 個需求,需求用 requirements 表述,requirements[i] 表示第 i 個需求的工作量大小,單位:人月。 這部分需求需要在 M 個月內完成開發,進行人力安排后每個月人力時固定的。 目前要求每個月最多有2個…

在k8s中部署nfs-client-provisioner

1、部署過程 1.1、環境依賴 在部署nfs-client-provisioner之前&#xff0c;需要先部署nfs服務。 因為&#xff0c;nfs-client-provisioner創建的pv都是要在nfs服務器中搭建的。 本示例中的nfs server的地址如下&#xff1a; [rootnode1 /]# showmount -e Export list for …

pinia 持久化插件使用

官方文檔 本文主要介紹 vue3組合式 api 使用持久化插件的寫法。 選項式 寫法官方已給出 安裝依賴 pnpm i pinia-plugin-persistedstate插件的使用 import { createPinia } from pinia import piniaPluginPersistedstate from pinia-plugin-persistedstateconst pinia creat…

JavaMap工具類(MapUtils)

1、Object轉Map 2、將 map 中的 value 為null的的元素轉成空字符串"" 3、map轉Object 4、MAP 判空 5、Map 排序 按key值長度進行排序 6、兩個MAP對比&#xff0c;在oldMap中移除remMap中所有的key值 備注&#xff1a;排序的話(TreeMap)是可以直接實現簡單排序的…

VR轉接線方案/VR Link串流數據線方案/VR眼鏡PD快充方案

虛擬現實技術(英文名稱&#xff1a;Virtual Reality&#xff0c;縮寫為VR)&#xff0c;又稱虛擬實境或靈境技術&#xff0c;是20世紀發展起來的一項全新的實用技術。虛擬現實技術囊括計算機、電子信息、仿真技術&#xff0c;其基本實現方式是以計算機技術為主&#xff0c;利用并…

Java:commons-lang3中的StringUtils.strip實現移除字符串首尾字符

依賴 <dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.12.0</version> </dependency>示例 // 包名 import org.apache.commons.lang3.StringUtils;// 處理字符串&…