UnoCSS 是一个具有高性能且极具灵活性的即时原子化 CSS 引擎,受 Windi CSS、Tailwind CSS、Twind 的启发。
特性:
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上创建