unocss-wechat
原生小程序,unocss示例
相关链接
- UnoCSS - 即时按需原子CSS引擎
- unocss-preset-weapp - unocss小程序预设
设置 unocss 预设
两种方法任选一种
方法一: 使用通用配置
此方法使用
unocss内置预设,通过以下配置解决
- 解决小程序不支持 * 选择器
- rem单位 转 rpx
- 小程序中使用npm,安装
unocss
npm -D unocss
- unocss.config
import { defineConfig, presetUno } from "unocss";
const remRE = /^-?[\.\d]+rem$/
export default defineConfig(
{
presets: [
presetUno(),
],
theme:{
// 解决小程序不支持 * 选择器
preflightRoot: ["page,::before,::after"]
},
postprocess(util) {
// 自定义rem 转 rpx
util.entries.forEach((i) => {
const value = i[1]
if (value && typeof value === 'string' && remRE.test(value))
i[1] = `${value.slice(0, -3) * 16 * 2}rpx`
})
},
}
)
方法二:使用 unocss-preset-weapp 预设
unocss-preset-weapp内部已经解决小程序不兼容的相关问题由于小程序不支持 \ \: \[ \$ \. 等转义类名
-
使用
hex代替#,_代替:/- 例如
bg-#81ecec/50可以使用bg-hex-81ecec_50表示
- 例如
-
针对
hover:和avtive:, 可以设置separators指定分隔符- 例如设置
separators为__,hover:bg-red-500可以使用hover__bg-red-500表示
- 例如设置
小程序中使用npm,安装 unocss unocss-preset-weapp
npm -D unocss unocss-preset-weapp
- unocss.config
import { defineConfig } from "unocss";
import presetWeapp from 'unocss-preset-weapp'
const include = [/\.wxml$/]
export default defineConfig({
content:{
pipeline:{
include
}
},
presets: [
presetWeapp(),
],
separators:'__'
})
生成wxss文件
在package.json,设置 script
使用
@unocss/cli监听文件内容,参考文档
{
"scripts": {
"unocss": "unocss pages/**/*.wxml -c unocss.config.js --watch -o unocss.wxss",
"unocss:build": "unocss pages/**/*.wxml -c unocss.config.js -o unocss.wxss"
}
}
- 运行
npm run unocss
wxml内容变化,触发生成新的unocss.wxss
- 导入
unocss.wxss
在
app.wxss导入生成的unocss.wxss
/**app.wxss**/
@import "./unocss.wxss";
.container {
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
box-sizing: border-box;
padding: 200rpx 0;
height: 100%;
}
unocss插件
- vscode
settings.json
// 文件类型
"files.associations": {
"*.wxml": "html",
},
使用 transformer
transformer可以将小程序不支持 \\ \\: \\[ \\$ \\. 等转义类名,根据规则替换原生小程序使用
transformer会改变原文件,不推荐使用
- unocss.confit.js
添加
transformerClass,设置转换wxml文件
import { defineConfig } from "unocss";
import presetWeapp from 'unocss-preset-weapp'
import { transformerClass } from 'unocss-preset-weapp/transformer';
const include = [/\.wxml$/]
export default defineConfig({
content:{
pipeline:{
include
}
},
presets: [
presetWeapp(),
],
transformers:[
transformerClass({
include,
classTags: false
})
]
})