import { presetUni } from '@uni-helper/unocss-preset-uni'; import { defineConfig, presetIcons, presetAttributify, transformerDirectives, transformerVariantGroup } from 'unocss'; export default defineConfig({ presets: [ presetUni(), presetIcons({ scale: 1.2, warn: true, extraProperties: { display: 'inline-block', 'vertical-align': 'middle', }, }), // 支持css class属性化, 可能会与ui的组件属性冲突 presetAttributify({ ignoreAttributes: [ 'color', // ... ], }), ], transformers: [ // 启用指令功能:主要用于支持 @apply、@screen 和 theme() 等 CSS 指令 transformerDirectives(), // 启用 () 分组功能 // 支持css class组合,eg: `
测试 unocss
` transformerVariantGroup(), ], shortcuts: [ { center: 'flex justify-center items-center', 'p-rtv': 'position: relative', 'text-indent-2': 'text-indent: 2em', 'w-s-no': 'white-space: nowrap', }, ], rules: [ [/^mg-([\.\d]+)$/, ([_, num]) => ({ margin: `${num}rpx` })], [/^pd-([\.\d]+)$/, ([_, num]) => ({ padding: `${num}rpx` })], [/^bg-([\w#-]+)$/, ([_, color]) => ({ 'background-color': color })], [/^c-([\w#-]+)$/, ([_, color]) => ({ color: color })], // bc-#fafafa [/^bc-([\w#-]+)$/, ([_, color]) => ({ 'border-color': color })], // 下边距 [/^mb-([\.\d]+)$/, ([_, num]) => ({ 'margin-bottom': `${num}rpx` })], // 上边距 [/^mt-([\.\d]+)$/, ([_, num]) => ({ 'margin-top': `${num}rpx` })], // 左边距 [/^ml-([\.\d]+)$/, ([_, num]) => ({ 'margin-left': `${num}rpx` })], // 右边距 [/^mr-([\.\d]+)$/, ([_, num]) => ({ 'margin-right': `${num}rpx` })], // 上padding [/^pt-([\.\d]+)$/, ([_, num]) => ({ 'padding-top': `${num}rpx` })], // 下padding [/^pb-([\.\d]+)$/, ([_, num]) => ({ 'padding-bottom': `${num}rpx` })], // pd3-40-0-20 // padding [ /^pd3-([\.\d]+)-([\.\d]+)-([\.\d]+)$/, ([_, top, right, bottom]) => ({ padding: `${top}rpx ${right}rpx ${bottom}rpx`, }), ], // pd2-40-20 [ /^pd2-([\.\d]+)-([\.\d]+)$/, ([_, top, right]) => ({ padding: `${top}rpx ${right}rpx`, }), ], // pd4-40-20-10-5 [ /^pd4-([\.\d]+)-([\.\d]+)-([\.\d]+)-([\.\d]+)$/, ([_, top, right, bottom, left]) => ({ padding: `${top}rpx ${right}rpx ${bottom}rpx ${left}rpx`, }), ], // mg2-40-20 [ /^mg2-([\.\d]+)-([\.\d]+)$/, ([_, top, right]) => ({ margin: `${top}rpx ${right}rpx`, }), ], // mg3-40-20-10 [ /^mg3-([\.\d]+)-([\.\d]+)-([\.\d]+)$/, ([_, top, right, bottom]) => ({ margin: `${top}rpx ${right}rpx ${bottom}rpx`, }), ], // mg4-40-20-10-5 [ /^mg4-([\.\d]+)-([\.\d]+)-([\.\d]+)-([\.\d]+)$/, ([_, top, right, bottom, left]) => ({ margin: `${top}rpx ${right}rpx ${bottom}rpx ${left}rpx`, }), ], // 左padding [/^pl-([\.\d]+)$/, ([_, num]) => ({ 'padding-left': `${num}rpx` })], // 右padding [/^pr-([\.\d]+)$/, ([_, num]) => ({ 'padding-right': `${num}rpx` })], // 字体大小 [/^f-s-([\.\d]+)$/, ([_, num]) => ({ 'font-size': `${num}rpx` })], // 字体加粗 [/^f-w-([\.\d]+)$/, ([_, num]) => ({ 'font-weight': `${num > 100 ? num : num * 100}` })], // 宽 [/^w-([\.\d]+)$/, ([_, num]) => ({ width: `${num}rpx` })], // 高 [/^h-([\.\d]+)$/, ([_, num]) => ({ height: `${num}rpx` })], // 带透明度的可传入颜色计算rgba值加背景 // 行高 [/^lh-([\.\d]+)$/, ([_, num]) => ({ 'line-height': `${num}` })], // 黑色透明度 [ /^bg-black-([\.\d]+)$/, ([_, num]) => ({ 'background-color': `rgba(0, 0, 0, ${num})`, }), ], // 透明度 [ /^opacity-([\.\d]+)$/, ([_, num]) => ({ opacity: `${num}`, }), ], // z-index [ /^z-index-([\.\d]+)$/, ([_, num]) => ({ 'z-index': `${num}`, }), ], // 百分比高度 [/^h-([\.\d]+)%$/, ([_, num]) => ({ height: `${num}%` })], [ /^wrapper-([\.\d]+)-([\.\d]+)$/, ([_, maxWidth, minWidth]) => ({ 'max-width': `${maxWidth}rpx`, 'min-width': `${minWidth}rpx`, margin: '0 auto', padding: '0 20px', }), ], // 最大宽 [/^max-w-([\.\d]+)$/, ([_, num]) => ({ 'max-width': `${num}rpx` })], // 最小宽 [/^min-w-([\.\d]+)$/, ([_, num]) => ({ 'min-width': `${num}rpx` })], // 最大高 [/^max-h-([\.\d]+)$/, ([_, num]) => ({ 'max-height': `${num}rpx` })], // 最小高 [/^min-h-([\.\d]+)$/, ([_, num]) => ({ 'min-height': `${num}rpx` })], // 栅格 30份 [/^hcol-([\.\d]+)$/, ([_, num]) => ({ width: `${(+num / 30) * 100}%` })], // border-radius-8 [ /^border-radius-([\.\d]+)$/, ([_, num]) => ({ 'border-radius': `${num}rpx`, }), ], // border-w-4 [ /^border-w-([\.\d]+)$/, ([_, num]) => ({ 'border-width': `${num}rpx`, }), ], // 旋转度数 [ /^rotate-([\-\.\d]+)$/, ([_, num]) => ({ transform: `rotate(${num}deg)`, }), ], // gap-20 [ /^gap-([\.\d]+)$/, ([_, num]) => ({ gap: `${num}rpx`, }), ], ], theme: { colors: { /** 主题色,用法如: text-primary */ primary: 'var(--wot-color-theme,#0957DE)', }, fontSize: { /** 提供更小号的字体,用法如:text-2xs */ '2xs': ['20rpx', '28rpx'], '3xs': ['18rpx', '26rpx'], }, }, });