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

Vue学习记录之二十 postcss自定义插件及Unocss的使用

一、实例1 使用postCss自定义px转vw插件

编写css插件:
一、在项目根目录下建立一个plugins文件夹,然后建立一个postcss-px-to-viewport.ts文件。

//vite 内置了postCss 无需安装
import { Plugin } from 'postcss'
//定义一个变量
const Options = {viewportWidth: 375, //UI设计稿上的宽度,这里我们默认的视口宽度 375
}
//定义变量类型
interface Options{viewportWidth:number
}
export const PostCsspxToViewport = (options:Options=Options):Plugin => {//ES6 Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。const opt = Object.assign({},Options,options)   //其实返回的结果是  { viewportWidth: 375 }//Plugin必须返回一个对象, 定义一个postcssPlugin。return {postcssPlugin:'postcss-px-to-viewport',//钩子函数,要拿到css所有节点,这时候用到 Declaration钩子Declaration(node){//px 转化为 vw//console.log(node.prop, node.value)  //prop相当于key,对应的值就是valueif(node.value.includes('px')){/*上面检测所有含有px的,如果有的我不想转换怎么办那,可以自己定义一个如includes('lvmabna'), 那么我们在写css的时候,如果想让转换的就使用lvmanba,如width:40lvmanba, 这样可以根据我们的要求进行转换。*///console.log(node.prop, node.value)const num = parseFloat(node.value) //主要是取消px,获取到一个number//套用公式(取2位小数)node.value = `${((num / opt.viewportWidth)*100).toFixed(2)}vw`console.log(node.value)}}}
}

二、在tsconfig.node.json 文件的
include中加入

“plugins/**/*”

compilerOptions中加入

“noImplicitAny”: false //容许隐式的any

三、引入插件
在vite.config.ts 文件,或独立uno.config.ts文件。

import { fileURLToPath, URL } from 'node:url'import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
//第一步:引入
import { PostCsspxToViewport } from './plugins/postcss-px-to-viewport'export default defineConfig({plugins: [vue(),vueJsx(),],//第二步: 注册css:{postcss:{plugins:[PostCsspxToViewport()]

http://www.mrgr.cn/news/58582.html

相关文章:

  • 【p2p、分布式,区块链笔记 Blockchain】truffle001 以太坊开发框架truffle初步实践
  • 如何运用信而泰测试仪实现802.1 QAV协议测试
  • ffmpeg视频滤镜: 裁剪-crop
  • 2024年10月24日随笔
  • Java项目实战II基于微信小程序的电子点餐系统(开发文档+数据库+源码)
  • Mac 下安装FastDFS
  • 遇到这3种接口测试问题,其实,你可以这么办~
  • 混个1024勋章
  • 2023年12月中国电子学会青少年软件编程(图形化)等级考试试卷(二级)答案 + 解析
  • CMU生成式人工智能大模型:从入门到放弃(九)
  • CMU生成式人工智能大模型:从入门到放弃(八)
  • 电机的旋转原理和发电原理!
  • 永恒之蓝漏洞利用复现
  • Oracle故障诊断(一线DBA必备技能)之ADRCI(一)
  • 大数据新视界 -- 大数据大厂之大数据与虚拟现实的深度融合之旅
  • Centos如何卸载docker
  • 论文学习 | 《电动汽车锂离子电池健康状态估计及寿命预测方法研究》
  • 面向对象进阶(下)(JAVA笔记第二十二期)
  • 海外著名新闻门户媒体软文发稿之华盛顿独立报-大舍传媒
  • Ubuntu 安装php7.3 nginx mysql
  • 基于PyQT+FaceNet卷积神经网络实现的学生人脸识别考勤系统
  • DuoAttention:高效处理长上下文推理的 AI 框架,让 LLMs 如虎添翼!
  • vi编辑器
  • MySQL查看某个数据库里面每张表的字符集和字符排序集
  • 江协科技STM32学习- P21 ADC模数转换器
  • Isaac Sim Docker 部署并使用过程记录