一、【UnoCss / unibest】样式篇

1、废话介绍

UnoCSS 是由 Windi CSS 的一名团队成员发起的,从我们在 Windi CSS 中所做的工作中汲取了很多灵感。虽然 Windi CSS 不再被积极维护(截至 2023 年 3 月),但你可以将 UnoCSS 视为 Windi CSS 的 "精神继承者"。 UnoCSS 继承了 Windi CSS 的按需特性,属性化模式快捷方式变体组编译模式 等等。最重要的是,UnoCSS 是从头开始构建的,考虑到了最大的可扩展性和性能,使我们能够引入 纯 CSS 图标无值的属性化标签化网络字体 等新功能。


unibest 是最好的 uniapp 开发框架,由 uniapp + Vue3 + Ts + Vite5 + UnoCss + VSCode(可选 webstorm) + uni插件+ wot-ui(可选其他 UI 库)构建,集成了多种工具和技术,使用了最新的前端技术栈,无需依靠 HBuilderX,通过命令行方式即可运行 web小程序App。(注:App 还是需要 HBuilderX

unibest 内置了 约定式路由layout布局请求封装请求拦截登录拦截UnoCSSi18n多语言 等基础功能,提供了 代码提示自动格式化统一配置代码片段 等辅助功能,让你编写 uniapp 拥有 best 体验 ( unibest 的由来)。

unibest 目前支持 H5小程序App

2、UnoCSS / unibest

本篇主要介绍 UnoCSS 的使用,以及如何与 设计稿尺寸 对应。 UnoCSS 是按需使用的原子 CSS 引擎,提供了良好的样式支持。

3、安装插件

请安装 VSCode 插件 antfu.unocss

安装完成后在 VSCode 中还可以预览,

如果不记得原子类,可以查 UnoCSS 的原子类UnoCSS Interactive

也可以查看 tailwindcss 的原子类,更加清晰明了,链接 - tailwindcss

4、设计稿尺寸

不同的编写方式,需要设置不同的设计稿尺寸,请看下文:

4.1、传统编写方式

如果有设计稿,通常使用传统的编写 CSS 的方式,里面的对应尺寸规律如下。以蓝湖为例,假如设计稿宽度为 750px,则直接复制样式代码到 css 代码,同时把 px 批量替换为 rpx 即可。

如果设计稿不是 750px 可以调整蓝湖的设置,让设计稿宽度为 750px

下面为一段辅助说明文案,从 uniapp 官网搬运而来。

rpx 是相对于基准宽度的单位,可以根据屏幕宽度进行自适应。uni-app 规定屏幕基准宽度 750rpx

开发者可以通过设计稿基准宽度计算页面元素 rpx 值,设计稿 1px 与框架样式 1rpx 转换公式如下:

设计稿 1px / 设计稿基准宽度 = 框架样式 1rpx / 750rpx

换言之,页面元素宽度在 uni-app 中的宽度计算公式:

750 * 元素在设计稿中的宽度 / 设计稿基准宽度

举例说明:

若设计稿宽度为 750px,元素 A 在设计稿上的宽度为 100px,那么元素 Auni-app 里面的宽度应该设为:750 * 100 / 750,结果为:100rpx

若设计稿宽度为 640px,元素 A 在设计稿上的宽度为 100px,那么元素 Auni-app 里面的宽度应该设为:750 * 100 / 640,结果为:117rpx

若设计稿宽度为 375px,元素 B 在设计稿上的宽度为 200px,那么元素 Buni-app 里面的宽度应该设为:750 * 200 / 375,结果为:400rpx

4.2、UnoCSS 编写方式

经过上一节的 unocss.config.ts 配置,可以得到下面的组合:

mp 里面:mt-4 => margin-top: 32rpx == 16px

h5 里面:mt-4 => margin-top: 1rem == 16px

我们还是把设计稿设置为 750,设计稿上多少 px 的元素,写成多少 rpx 即可。

元素 A 在设计稿上的宽度为 100px,则写 w-100rpx 即可。

就是把 传统编写方式 中写在 css 中的样式搬到了 UnoCSS 中。

如果要想用 w-100 这种方式,需要做额外的处理():

5、使用指南

写法可以参考 tailwindcss

太忙了,有空再写吧。

总结

本文主要介绍了 UnoCSS 的使用,以及 unocss.config.ts 中的一些配置项。

同时说明了设计稿在两种编写方式下的宽度的设置,分别为 7501500.

最后说明一下,原子化CSS传统方式 两者不是互斥的,他们是互补的,合适的地方使用合适的方式。

相关推荐
是大林的林吖3 分钟前
解决 elementui el-cascader组件懒加载时存在选中状态丢失的问题?
前端·javascript·elementui
鹏仔工作室3 分钟前
elemetui中el-date-picker限制开始结束日期只能选择当月
前端·vue.js·elementui
一 乐5 分钟前
个人博客|博客app|基于Springboot+微信小程序的个人博客app系统设计与实现(源码+数据库+文档)
java·前端·数据库·spring boot·后端·小程序·论文
sTone8737514 分钟前
Android Room部件协同使用
android·前端
晴殇i19 分钟前
前端代码规范体系建设与团队落地实践
前端·javascript·面试
用户740546399430920 分钟前
Vite 库模式输出 ESM 格式时的依赖处理方案
前端·vite
开发者小天27 分钟前
React中使用useParams
前端·javascript·react.js
lichong95135 分钟前
Android studio release 包打包配置 build.gradle
android·前端·ide·flutter·android studio·大前端·大前端++
nvvas1 小时前
npm : 无法加载文件 D:\nvm\nodejs\npm.ps1,因为在此系统上禁止运行脚本问题解决
前端·npm·node.js
拉不动的猪1 小时前
浏览器之内置四大多线程API
前端·javascript·浏览器