当前位置: 首页 > 软件库 > Web应用开发 > >

UnoCSS

即时原子化 CSS 引擎
授权协议 MIT
开发语言 JavaScript TypeScript HTML/CSS
所属分类 Web应用开发
软件类型 开源软件
地区 国产
投 递 者 田德馨
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

UnoCSS 是一个具有高性能且极具灵活性的即时原子化 CSS 引擎,受 Windi CSS、Tailwind CSS、Twind 的启发。

特性:

  • 完全可定制- 没有核心实用程序,所有功能都通过预设提供。
  • 无需解析、无需 AST、无需扫描,它是即时的(比 Windi CSS 或 Tailwind JIT 快 200 倍)
  • ~3.5kb min+gzip - 零依赖和浏览器友好。
  • 快捷方式- 动态别名实用程序。
  • 属性模式- 在属性中分组实用程序
  • 纯 CSS 图标- 使用任何图标作为单个类。
  • 检查器- 以交互方式检查和调试。
  • CSS-in-JS 运行时版本
  • CSS Scoping
  • CSS 代码拆分 - 为 MPA 提供最小的 CSS。
  • 库友好 - 随你的组件库提供原子样式并安全地限定范围。

Benchmark

11/5/2021, 4:26:57 AM
1656 utilities | x50 runs (min build time)

none                              8.30 ms / delta.      0.00 ms 
unocss       v0.4.15             13.58 ms / delta.      5.28 ms (x1.00)
windicss     v3.2.1             989.57 ms / delta.    981.27 ms (x185.94)
tailwindcss  v3.0.0-alpha.1    1290.96 ms / delta.   1282.66 ms (x243.05)

UnoCSS 是一个引擎,而非一款框架,因为它并未提供核心工具类,所有功能可以通过预设和内联配置提供。

默认情况下,UnoCSS 应用默认预设。它提供了流行的实用程序优先框架的通用超集,包括 Tailwind CSS、Windi CSS、Bootstrap、Tachyons 等。

例如,ml-3(Tailwind)、ms-2(Bootstrap)、ma4(Tachyons)、mt-10px(Windi CSS) 都是有效的。

.ma4 { margin: 1rem; }
.ml-3 { margin-left: 0.75rem; }
.ms-2 { margin-inline-start: 0.5rem; }
.mt-10px { margin-top: 10px; }

UnoCSS 的主要目标是直观性和可定制性。它可以让你在数十秒内,定义你自己的 CSS 工具。

  • 第三章 使用UnoCSS原子化CSS UnoCSS的GitHub地址 UnoCSS的文档地址 原子样式也有很多选择,最著名的就是 Tailwind。 Tailwind 虽然好,但是性能上有一些不足。由于Tailwind 会生成大量样式定义。全量的 CSS 文件往往体积会多至数 MB。这个对于页面性能是完全不可接受的。如果在开发时进行动态的按需剪裁,又会影响编译性能,降低开发体验。为了解决性能问题,

  • 1 说明 ​ 原子类css用起来嘎嘎爽,像tailwindcss、unocss、windcss等构建开发小项目贼快了,uniapp项目普遍都比pc端项目小,而且要兼容多端开发的特点,项目小、快速开发的特点比较突出。 ​ 由于tailwindcss、unocss、windcss等在移动端的使用体验目前不太友好,比如对移动端兼容性不太好,如.w-1/2在小程序端属于特殊字符,会报错;还会存在特殊报错;

  • UnoCss文档 playground 安装 npm i -D unocss # 或者使用 cdn <script src="https://cdn.jsdelivr.net/npm/@unocss/runtime/attributify.global.js"></script> //安装unocss以及图标库 npm i -D unocss @unocss/preset-icons @iconi

  • unocss 动态引入图标无效 在TS文件中写好 { icon: 'i-icon-park-outline:list-numbers', title: '数字输入框', type: 'number' } 在使用部分无效 <i :class="['el-icon', `${element.icon}`]" ></i> 这个是因为Unocss的

  • 主要利用unocss的preset,制定自定义rule,配合正则表达式实现简单类名 1 设置flex属性 import type { Preset } from 'unocss const directionAbbr = { col: 'column', colr: 'column-reverse', row: 'row', rowr: 'row-reverse', } //主轴

 相关资料
  • 比如定义了一个变量 --text-color:red,能否则直接使用类名color-[--text-color]或者类似的其他能直接用变量名的写法

  • 问题内容: 我正在尝试获取Android应用程序的基本时间。我使用http://hi- android.info/src/android/net/SntpClient.java.html 作为NTP客户端,并使用以下代码来实现NTP(=来自SntpClient.java的示例代码): 我尝试了以下列表中的其他服务器:http : //mindprod.com/jgloss/timesources.

  • 问题内容: 我有一个缓存,该缓存是使用Simeple HashMap实现的。喜欢 - 大部分时间都使用此缓存从中读取值。我有另一个重新加载缓存的方法,在这个方法的内部,我基本上创建了一个新的缓存,然后分配了引用。据我了解,对象引用的分配是Java中的Atomic。 我了解,如果我不将缓存声明为易失性,则其他线程将无法看到更改,但是对于我的用例而言,将缓存中的更改传播到其他线程不是时间紧迫的,它们可

  • 我正在做一些关于JAVA初始化过程的研究。这里有一个很好的参考材料:当一个类在JVM中加载和初始化时 在这个页面上有规则说: 3)如果类初始化是由于访问静态字段而触发的,只有声明静态字段的类被初始化,即使静态字段被类型的子引用,它也不会触发超级类或子类的初始化类,子接口或接口的实现类。 我真的不明白这个想法。如果静态字段被Subclass引用,那么这个字段当然需要创建一个子类对象或由Subclas

  • 问题内容: 我很惊讶Java的AtomicInteger和AtomicLong类没有用于模块化增量的方法(因此,达到极限后,该值会回零。) 我认为我必须丢失一些显而易见的东西。最好的方法是什么? 例如,我想在线程之间共享一个简单的int,并且我希望每个线程都能够递增它,例如mod 10。 我可以创建一个使用同步/锁的类,但是有没有更好,更简单的方法? 问题答案: 向您的方法添加修饰符或块有什么困难

  • 问题内容: 我希望创建一个系统,注册后将在我的网站上为用户帐户区域创建一个子域。 例如johndoe.website.com 我认为这可能与.htaccess文件有关,并且可能重定向到网站上的其他位置吗?我真的不知道 但是,任何使我动手的信息将不胜感激。 创建注册区域不是问题-我已经做了很多次了。我只是不确定从子域开始。 问题答案: 快速淘汰 您需要在DNS服务器* .website.com上创建