vue 行内样式 px 单位 转换为 vw

news2024/9/24 1:14:37

vue2 

安装 插件  npm i style-vw-loader --save

vue.config.js 文件配置


module.exports = {
  chainWebpack: (config) => {
    config.module
      .rule('vue')
      .test(/\.vue$/)
      .use('style-vw-loader')
      .loader('style-vw-loader')
      .options({
        unitToConvert: "px",//需要转换的单位
        viewportWidth: 1920,//设计稿的宽度
        unitPrecision: 5,//转换单位的小数位数
        viewportUnit: "vw",
        fontViewportUnit: "vw",
        minPixelValue: 1,
      })
  }
}

在vite 中使用 

创建 stylePxToVw.ts 文件

// 默认参数
let defaultsProp = {
   unitToConvert: "px",//需要转换的单位
   viewportWidth: 1920,//设计稿的宽度
   unitPrecision: 5,//转换单位的小数位数
    viewportUnit: "vw",
    fontViewportUnit: "vw",
    minPixelValue: 1,
};
function toFixed(number:any, precision:any) {
    var multiplier = Math.pow(10, precision + 1),
        wholeNumber = Math.floor(number * multiplier);
    return (Math.round(wholeNumber / 10) * 10) / multiplier;
}

function createPxReplace(
    viewportSize:any,
    minPixelValue:any,
    unitPrecision:any,
    viewportUnit:any
) {
    return function ($0:any, $1:any) {
        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:any, id:any) {
            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;

stylePxToVw.ts文件在文件夹中的位置

报错就加入

在tsconfig.json文件中 加入

 "include": [

    "src/**/*",

    "src/**/*.ts",

    "src/**/*.d.ts",

    "src/**/*.tsx",

    "src/**/*.vue",

  ],

在tsconfig.node.json中加入

"include": [

    "src/utils/*.ts",

    "vite.config.ts"

  ]

在vite.config.ts中使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/400492.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

讲透前端工程开发工具发展与使用

前端⼯程化的发展及⼯具详解 什么是⼯程化&#xff1f;什么是前端⼯程化&#xff1f; 随着发展的逐步发展&#xff0c;作为⼯程师除了需要关注需要写的⻚⾯&#xff0c;样式和逻辑之外&#xff0c;还需要⾯对⽇益复杂的系统性问题&#xff0c;⽐如模块化⽂件的组织、ES6 JS ⽂…

为了满足国内市场快速发展的业务需求,理想汽车选择亚马逊云科技

理想汽车是一家用户驱动的汽车科技企业&#xff0c;坚持核心技术全栈自研&#xff0c;理想ONE是其首个单车突破20万辆的智能电动车产品。借助亚马逊云科技领先技术和多项托管服务&#xff0c;理想汽车迅速构建起安全稳定、技术架构先进的车联网云计算处理平台&#xff0c;服务于…

R语言基础(二):常用函数

接前文&#xff1a; R语言基础(一)&#xff1a;注释、变量 3.常用函数 函数就是一些已经编写好的功能&#xff0c;我们拿过来直接使用就可以了。 3.1 查看变量ls() 也许你清空了控制台&#xff0c;看不到之前的变量。但是它一直存在于系统中。 我们可以使用ls()函数查看已经定…

事件响应必备:DNS攻击与防御矩阵

攻击者采用了哪些DNS攻击技术&#xff0c;哪些组织可以帮助事件响应团队检测、缓解和预防这些技术&#xff1f;FIRST近日发布的DNS攻击与防御矩阵提供了答案。 DNS作为互联网基础架构的一项核心服务&#xff0c;安全问题严峻&#xff0c;各种攻击层出不穷。F5发布的数据显示&a…

项目管理手册

1 概述 1.1 项目管理体系 1.1.1 体系基础 项目管理体系是建立在公司 ISO 9000 质量管理体系基础上&#xff0c;结合 PMI 项目管理框架与 CMMI 能力成熟度模型&#xff0c;针对项目实施状态&#xff0c;对一些重点环节进行细化&#xff0c;加强重点环节的监控&#xff0c;明确…

Python导入模块的3种方式(超级详细)

很多初学者经常遇到这样的问题&#xff0c;即自定义 Python 模板后&#xff0c;在其它文件中用 import&#xff08;或 from...import&#xff09; 语句引入该文件时&#xff0c;Python 解释器同时如下错误&#xff1a; ModuleNotFoundError: No module named 模块名 意思是 Pyt…

VS2022安装EasyX 及 EasyX图形库安装和使用(附C++各图形编程项目示例源码)

文章目录一、EasyX的安装二、C_EasyX 项目1. 樱花2. 雪花3. 小熊4. 跳动爱心5. 橘子钟表6. 红玫瑰7. 奥特曼三、更多项目资源EasyX提取链接 网盘链接&#xff1a;https://pan.baidu.com/s/1gPtRVZub_008jwcK11Bb-g?pwd9ol9 提取码&#xff1a;9ol9 什么是EasyX&#xff1f; E…

GTC08L可替代启攀微八通道CP2528、CP2682

由工采网代理提供的八通道电容式触摸传感芯片—GTC08L可完美替代启攀微CP2528、CP2682、CP2688等多款八按键触摸芯片。 芯片介绍&#xff1a; GTC08L采用SOP-16L(9.90x3.90x1.40,e1.27) 封装&#xff1b;电源电压范围&#xff1a;2.7V&#xff5e;5.5V具有各种智能传感功能&…

使用JProfiler分析java oom dump文件

1、安装JProfiler&#xff08;本文使用JProfiler11&#xff09; 链接&#xff1a;https://pan.baidu.com/s/1VBHLIo8hIVGeeLjaBVjcIg 提取码&#xff1a;q5wl 在JProfiler的堆遍历器(Heap Walker)中&#xff0c;你可以对堆的状况进行快照并且可以通过选择步骤下寻找感兴趣的对…

一阶LADRC笔记代码实现

这两天看了一下LADRC的。学习深度不够&#xff0c;从理论和原理&#xff0c;没法评论什么。从个人感受上&#xff0c;它会从另一种角度去解释一些的控制的东西。从工程使用上&#xff0c;还是很有参考价值的&#xff0c;参数意义比较明确&#xff0c;整定参数比较容易。 参考&…

Javaweb MVC模式和三层架构

MVC 模式和三层架构是一些理论的知识&#xff0c;将来我们使用了它们进行代码开发会让我们代码维护性和扩展性更好。 7.1 MVC模式 MVC 是一种分层开发的模式&#xff0c;其中&#xff1a; M&#xff1a;Model&#xff0c;业务模型&#xff0c;处理业务 V&#xff1a;View&am…

沃隆食品冲刺上市:业绩整体呈下滑态势,红杉资本提前退出投资

近日&#xff0c;“每日坚果”的缔造者——青岛沃隆食品股份有限公司&#xff08;下称“沃隆食品”&#xff09;平移提交招股书&#xff0c;准备在上海证券交易所主板上市。本次冲刺上市&#xff0c;沃隆食品计划募集7.00亿元&#xff0c;中信证券为其保荐机构。 沃隆食品在招…

面试必看:谈谈你所了解的JVM调优,JVM性能调优总结

文章目录从面试角度来谈谈你了解的JVM调优GC调优的步骤1.确定目标&#xff1a;2.优化参数3.验收优化结果GC优化案例一、Major GC和Minor GC频繁优化Minor GC频繁问题&#xff1a;1.可以适当增大新生代的内存二、请求高峰期发生GC&#xff0c;导致服务可用性降低优化标记停顿时间…

第55章 头像图片的前端渲染显示

1 WebApi.Controllers.CustomerController.GetCustomerByToken /// <param name"token">1个指定的令牌字符串。</param> /// <summary> /// 【通过令牌获取用户-无需权限】 /// </summary> /// <remarks> /// 摘要&#xff1a; /// …

【Python】装饰器

一、装饰器的作用 装饰器能够为已经存在的对象添加额外的功能。 二、什么是装饰器 装饰器本质是一个python函数&#xff0c;它可以让其他函数在不需要做任何代码变动的前提下增加额外功能&#xff0c;装饰器的返回值也是一个函数对象。 三、装饰器的应用场景 插入日志、性能…

在云服务器安装tomcat和mysql

将 linux 系统安装包解压到指定目录进入 bin 目录执行./startup.sh 命令启动服务器执行./shutdown.sh 关闭服务器在浏览器中访问虚拟机中的 tomcat ip端口具体操作入下解压tomcat压缩包解压&#xff0c;输入tom按table键自动补全tar -zxvf 启动tomcat进入bin目录在linux启动to…

debian11安装Nvidia驱动及Docker运行

文章目录前言硬件及软件环境驱动下载驱动安装禁用xserver禁用nouveau安装依赖设置可执行并运行检查安装结果Docker配置Docker安装nvidia-container-runtime安装[^4]命令脚本内容执行脚本安装 nvidia-container-runtime检测Docker gpu 验证卸载指令总结异常处理参考链接前言 博…

Spring Boot+Vue前后端分离项目练习07之网盘项目注册登陆页面实现

1.Axios安装和接口封装 Axios是一个易用、简洁且高效的http库&#xff0c; 使用Promise管理异步&#xff0c;支持请求和响应拦截器&#xff0c;自动转换JSON数据等高级配置&#xff0c;是在vue项目中十分常见前端请求库&#xff0c;使用以下指令安装。 npm install axiosnpm …

工作中git常用操作

前言 在各种版本并行&#xff0c;需求不断迭代的过程中&#xff0c;我们经常会遇到各种打断开发的场景&#xff1a; 场景一&#xff1a;当前版本功能开发到一半&#xff0c;上级临时要求去修复某个线上bug&#xff1f;你能说不吗&#xff0c; 那当然绝对服从组织安排 &#x…

代码随想录算法训练营day54 | 动态规划之子序列 392.判断子序列 115.不同的子序列

day54392.判断子序列1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp数组115.不同的子序列1.确定dp数组&#xff08;dp table&#xff09;以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺…