当前位置: 首页 > news >正文

在 uniapp 里使用 unocss,vue3 + vite 项目

一、创建项目方式:vue-cli

二、基本的安装

npm install -D unocss

三、vite.config.js

import { defineConfig } from 'vite'
import uni from '@dcloudio/vite-plugin-uni'
import UnoCSS from 'unocss/vite'
// https://vitejs.dev/config/
export default defineConfig({plugins: [uni(),UnoCSS()],server: {port: 6321,host: '0.0.0.0',}
})

四、main.js

import {createSSRApp
} from "vue";
import App from "./App.vue";import 'virtual:uno.css'
export function createApp() {const app = createSSRApp(App);return {app,};
}

五、unocss.config.js

unocss-preset-weapp 是一个专为 微信小程序 和 UniApp 设计的 UnoCSS 预设,它内置了 rpx 单位支持,并可以自动处理 rem 转换问题10。
安装:

npm i unocss-preset-weapp -D
// unocss.config.jsimport presetWeapp from "unocss-preset-weapp";import {transformerClass,transformerAttributify,
} from "unocss-preset-weapp/transformer";
import { defineConfig, presetAttributify } from "unocss";
const directionMap = {t: "top",b: "bottom",r: "right",l: "left",x: ["left", "right"], // 水平方向y: ["top", "bottom"], // 垂直方向
};export default {presets: [presetAttributify(),presetWeapp({whRpx: true, // 启用 rpx 单位(默认 true)platform: "uniapp", // 或 'uniapp'designWidth: 750,}),],transformers: [transformerAttributify(), transformerClass()],shortcuts: [],rules: [// 基础间距[/^m-(\d+)$/, ([, d]) => ({ margin: `${d}rpx` })],[/^p-(\d+)$/, ([, d]) => ({ padding: `${d}rpx` })],// 方向性间距(修正版)[/^m([tbrlxy])-(\d+)$/,([, dir, d]) => {const directions = Array.isArray(directionMap[dir])? directionMap[dir]: [directionMap[dir]];return Object.fromEntries(directions.map((k) => [`margin-${k}`, `${d}rpx`]));},],[/^p([tbrlxy])-(\d+)$/,([, dir, d]) => {const directions = Array.isArray(directionMap[dir])? directionMap[dir]: [directionMap[dir]];return Object.fromEntries(directions.map((k) => [`padding-${k}`, `${d}rpx`]));},],// 负值支持[/^-m([tbrlxy])?-(\d+)$/,([, dir, d]) => {if (!dir) return { margin: `-${d}rpx` };const directions = Array.isArray(directionMap[dir])? directionMap[dir]: [directionMap[dir]];return Object.fromEntries(directions.map((k) => [`margin-${k}`, `-${d}rpx`]));},],["center",{position: "absolute",top: "50%",left: "50%",transform: `translate(-50%, -50%)`,},],["shadow1",{"box-shadow": "0px 0px 12px rgba(0, 0, 0, .12)",},],[/^border-#([0-9a-fA-F]+)$/,([_, color]) => ({border: `1px solid #${color}`,}),],["trans",{transition: ".3s",},],],
};

为什么这里要写这么一大段自定义规则,因为这个插件有bug,目前已经反馈了,希望以后可以更新修复,贴上 github issue 截图
在这里插入图片描述

http://www.lryc.cn/news/619982.html

相关文章:

  • 数据结构初阶(12)排序算法—插入排序(插入、希尔)(动图演示)
  • 智驾系统架构解析
  • 常用机器学习公开数据集大全
  • [系统架构设计师]系统架构基础知识(一)
  • [系统架构设计师]信息安全技术基础知识(三)
  • DataOceanAI Dolphin(ffmpeg音频转化教程) 多语言(中国方言)语音识别系统部署与应用指南
  • 最新去水印小程序系统 前端+后端全套源码 多套模版 免授权
  • TF-IDF实战——《红楼梦》文本分析
  • 商品分类拖拽排序设计
  • 用 Qt C++ 从零打通“前端界面 → 后端接口”的数据交互
  • Redis的基础命令
  • 图像分类-动手学计算机视觉10
  • RabbitMQ:Windows版本安装部署
  • 高防CDN和高防IP的各自优势
  • Vue项目生产环境性能优化实战指南
  • 【Java虚拟机】JVM内存模型
  • uniapp跨端性能优化方案
  • 中科米堆CASAIM蓝光三维扫描仪用于焊接件3D尺寸检测
  • GDB命令笔记
  • 【React】use-immer vs 原生 Hook:谁更胜一筹?
  • Chrome 插件开发实战
  • AutoCAD 各版本与插件合集详解:Architecture、Plant 3D、Civil 3D 等
  • CNN卷积神经网络预测手写数字的Pytorch实现
  • games101 第三讲 Transformation(变换)
  • 人工到智能:塑料袋拆垛的自动化革命 —— 迁移科技的实践与创新
  • AI一键抠图软件--Digiarty.AIArty.Image.Matting
  • MySQL数据库知识体系总结 20250813
  • 数据库连接池如何进行空闲管理
  • TeamViewer 以数字化之力,赋能零售企业效率与客户体验双提升
  • “我店模式”:零售转型中的场景化突围