style-vw-loader适配vite
style-vw-loader这个插件是基于webpack的插件,不适用于vite,因为vite是基于rollup的。
rollup的插件和webpack的插件写法略有不通。
查看style-vw-loader源码将其移植即可。
源码比较简单:
https://github.com/hyy1115/style-vw-loader
rollup的插件编写也和webpack类似,可以参考这里:
https://juejin.cn/post/7060806475907596319
改造后如下:
/stylePxToVw.js
// 默认参数
let defaultsProp = {
unitToConvert: "px",
viewportWidth: 750,
unitPrecision: 5,
viewportUnit: "vw",
fontViewportUnit: "vw",
minPixelValue: 1,
};
function toFixed(number, precision) {
var multiplier = Math.pow(10, precision + 1),
wholeNumber = Math.floor(number * multiplier);
return (Math.round(wholeNumber / 10) * 10) / multiplier;
}
function createPxReplace(
viewportSize,
minPixelValue,
unitPrecision,
viewportUnit
) {
return function ($0, $1) {
if (!$1) return;
var pixels = parseFloat($1);
if (pixels <= minPixelValue) return;
return toFixed((pixels / viewportSize) * 100, unitPrecision) + viewportUnit;
};
}
const templateReg = /<template>([\s\S]+)<\/template>/gi;
const pxGlobalReg = /(\d+)px/gi;
// 生成插件的工厂方法
const pluginGenerator = (customOptions = defaultsProp) => {
// 返回插件
return {
// 插件名称
name: "postcss-px-to-viewport",
// transform 钩子
async transform(code, id) {
let _source = "";
if (/.vue$/.test(id)) {
let _source = "";
if (templateReg.test(code)) {
_source = code.match(templateReg)[0];
}
if (pxGlobalReg.test(_source)) {
let $_source = _source.replace(
pxGlobalReg,
createPxReplace(
customOptions.viewportWidth,
customOptions.minPixelValue,
customOptions.unitPrecision,
customOptions.viewportUnit
)
);
code = code.replace(_source, $_source);
console.log(code);
}
}
return { code };
},
};
};
export default pluginGenerator;
然后,只需要vite.config.js里使用这个插件即可
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import postcsspxtoviewport from 'postcss-px-to-viewport';
export default defineConfig({
plugins: [
stylePxToVw(), // 插件的引用顺序要注意 一定要放在第一位
vue(),
]
})
效果

style-vw-loader适配vite的更多相关文章
- 关于使用vw单位适配H5项目(二)
一些比较小的H5页面,我觉得全没有必要一定要使用框架的,比如vue和react之类的,我觉得原生的js,html5也可以写好移动端. 最近刚好要赶10多个h5页面,适配移动端的,各种手机型号都要适配, ...
- webpack的像素转vw loader插件
这是一款针对webpack的像素转vw单位的loader插件. 笔者公司中,h5 rem的开发方案目前已经渐渐开始转向vw方案,因此本工具应运而生. 目前所制作的h5,大部分设计稿分辨率都是750的宽 ...
- vue项目使用vw单位适配移动端方法
传送门: https://blog.csdn.net/zjw0742/article/details/79337336
- 转:vw适配中使用伪类选择器遇到的问题
地址:https://blog.csdn.net/perryliu6/article/details/80965734 在使用vue init webpack构建的项目中,一开始我准备使用rem布局, ...
- 转:如何在Vue项目中使用vw实现移动端适配
https://www.w3cplus.com/mobile/vw-layout-in-vue.html 有关于移动端的适配布局一直以来都是众说纷纭,对应的解决方案也是有很多种.在<使用Flex ...
- 使用vw做移动端页面的适配
Flexible到今天也有几年的历史了,解救了很多同学针对于H5页面布局的适配问题.而这套方案也相对而言是一个较为成熟的方案.简单的回忆一下,当初为了能让页面更好的适配各种不同的终端,通过Hack手段 ...
- 在Vue项目中使用vw实现移动端适配
有关于移动端的适配布局一直以来都是众说纷纭,对应的解决方案也是有很多种.在<使用Flexible实现手淘H5页面的终端适配>提出了Flexible的布局方案,随着viewport单位越来越 ...
- 如何在Vue项目中使用vw实现移动端适配(转)
有关于移动端的适配布局一直以来都是众说纷纭,对应的解决方案也是有很多种.在<使用Flexible实现手淘H5页面的终端适配>提出了Flexible的布局方案,随着viewport单位越来越 ...
- 如何在Vue项目中使用vw实现移动端适配
有关于移动端的适配布局一直以来都是众说纷纭,对应的解决方案也是有很多种.在< 使用Flexible实现手淘H5页面的终端适配>提出了Flexible的布局方案,随着 viewport 单位 ...
- 关于h5屏幕适配
1)使用rem进行等比缩放 rem作用于非根元素时,相对于根元素字体大小:rem作用于根元素字体大小时,相对于其出初始字体大小 比如根元素(html)设置font-size=12px; 非根元素设置w ...
随机推荐
- 康谋分享 | 3DGS:革新自动驾驶仿真场景重建的关键技术
登录后复制 随着自动驾驶技术的迅猛发展,构建高保真.动态的仿真场景成为了行业的迫切需求.传统的三维重建方法在处理复杂场景时常常面临效率和精度的挑战.在此背景下,3D高斯点阵渲染(3DGS)技术应运而生 ...
- heapdump敏感信息提取工具-heapdump_tool(二),附下载链接。
heapdump敏感信息查询工具,例如查找 spring heapdump中的密码明文,AK,SK等 下载链接: heapdump_tool下载链接:heapdump_tool下载 声明: 此工具 ...
- 工具 | ApplicationScanner
0x00 简介 ApplicationScanner是一款APP客户端安全项检测工具. 下载地址: ApplicationScanner下载: ApplicationScanner下载 0x01 功能 ...
- 【记录】IDA|IDA设置text view为默认,并解决IDA7.6打开新固件卡顿的问题
版本:IDA Pro 7.6 Graph View(控制流视图)其实我真的看得很少,因为遇到分析难题时总是是因为间接调用,它根本分析不出来.但是一开IDA它就自动分析这个特别卡.所以今天想彻底解决一下 ...
- 【HUST】网安|操作系统实验|实验二 进程管理与死锁
目的 1)理解进程/线程的概念和应用编程过程: 2)理解进程/线程的同步机制和应用编程: 任务 1)在Linux下创建一对父子进程. 2)在Linux下创建2个线程A和B,循环输出数据或字符串. 3) ...
- Alembic迁移脚本:让数据库变身时间旅行者
title: Alembic迁移脚本:让数据库变身时间旅行者 date: 2025/05/09 13:08:18 updated: 2025/05/09 13:08:18 author: cmdrag ...
- INotifyCollectionChanged 用法简介
INotifyCollectionChanged 接口是 System.Collections.Specialized 命名空间中的一个接口,用于在集合发生更改时通知订阅者.这个接口通常在实现了集合的 ...
- Autocad二次开发中的XData
Autocad允许应用程序在实体对象上附加XDATA(扩展数据).XDATA可以附在任何图形实体以及层,线型等非图形实体上,Autocad负责维护这些信息,但不使用这些信息,也不在图纸中直接表现出来. ...
- 纯前端实现图片伪3D视差效果
作者:vivo 互联网前端团队- Su Ning 本文通过depth-anything获取图片的深度图,同时基于pixi.js,通过着色器编程,实现了通过深度图驱动的伪3D效果.该方案支持鼠标/手势与 ...
- ArkUI-X中Plugin生命周期开发指南
ArkUI-X插件用于拓展ArkUI应用的能力,提供管理插件生命周期的能力.本文主要介绍Android平台的ArkUI-X插件生命周期的使用. Android平台创建ArkUI-X插件生命周期 在An ...