vue3 vite 自适应方案

两种方案:

1 使用 postcss-pxtorem插件

npm install postcss-pxtorem autoprefixer --save-dev #

或 yarn add postcss-pxtorem autoprefixer -D

2、postcss-px-to-viewport

npm install postcss-px-to-viewport --save-dev

yarn add postcss-px-to-viewport -D

安装完成后再项目跟目录下新建postcss.config.cjs

module.exports = {plugins: {// 自动添加浏览器前缀autoprefixer: {overrideBrowserslist: ['Android 4.1','iOS 7.1','Chrome > 31','ff > 31','ie >= 8']},// px 转 rem 配置// 'postcss-pxtorem': {//   rootValue: 75, // 设计稿宽度的 1/10(375px 设计稿对应 37.5)//   propList: ['*'], // 需要转换的属性,* 表示所有//   unitPrecision: 2, // 转换后的小数位数//   selectorBlackList: ['ignore-'], // 忽略带 ignore- 前缀的类//   replace: true, // 直接替换 px 而不是添加备用属性//   mediaQuery: false, // 不转换媒体查询中的 px//   minPixelValue: 1, // 小于 1px 不转换//   // exclude: /node_modules/i // 排除 node_modules 目录// },// px 转 vw vh 配置'postcss-px-to-viewport': {viewportWidth: 375, // 设计稿的视口宽度(核心配置)viewportHeight: 667, // 设计稿的视口高度(可选)unitPrecision: 5, // 转换后保留的小数位数viewportUnit: 'vw', // 主要转换的单位,可选 vw/vhselectorBlackList: ['ignore-'], // 不转换的选择器minPixelValue: 1, // 小于等于 1px 不转换mediaQuery: false, // 是否转换媒体查询中的 pxexclude: /node_modules/i, // 排除转换的目录include: undefined, // 需要强制转换的目录landscape: false, // 是否处理横屏情况landscapeUnit: 'vh', // 横屏时使用的单位landscapeWidth: 667 // 横屏时的视口宽度}}
};

以上代码为 rem 和 vw vh 两种方案,大家在开发中任选其中一个就可以

这个两种方案没有办法转换行内样式,

下面我们可以写两个函数将行内样式转换

export const pxToVw=(px, designWidth = 375)=> {const vw = (px / designWidth) * 100;// 先乘 100000 后四舍五入,再除以 100000 保留5位小数const roundedVw = Math.round(vw * 100000) / 100000;// 确保即使小数位不足5位也显示5位return roundedVw.toLocaleString('en-US', {minimumFractionDigits: 5,maximumFractionDigits: 5}) + 'vw';
}
export function pxToRem(px, rootValue = 75) {const rem = px / rootValue;// 保留 5 位小数(与 postcss-pxtorem 的 unitPrecision 保持一致)const roundedRem = Math.round(rem * 100000) / 100000;// 确保显示 5 位小数return roundedRem.toLocaleString('en-US', {minimumFractionDigits: 5,maximumFractionDigits: 5}) + 'rem';
}

需要注意的是

pxToVw 的designWidth 参数需要和postcss.config.cjs的viewportWidth 值保持一致

pxToRem的rootValue参数值需要和postcss.config.cjs的 rootValue值保持一致

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

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

相关文章

华为研发投资与管理实践(IPD)读书笔记

在全球科技产业竞争日趋激烈的背景下,企业研发管理早已告别 “依赖个体经验、靠运气突破” 的粗放时代,如何将研发创新从 “偶然成功” 转化为 “可复制、可持续的必然成果”,成为所有追求长期竞争力的企业必须破解的命题。华为,作…

【LeetCode_283】移动零

刷爆LeetCode系列LeetCode第283题:github地址前言题目描述题目与思路分析代码实现算法代码优化LeetCode第283题: github地址 有梦想的电信狗 前言 本文用C实现 LeetCode 第283题 题目描述 题目链接:https://leetcode.cn/problems/move-z…

一文弄懂C/C++不定参数底层原理

目录 一、C语言的可变参数:基于栈帧的手动读取 (1)C函数调用的栈帧结构 (2)C 可变参数的 4 个核心宏:如何 “手动读栈” (3)实战代码:用 C 可变参数实现求和函数 &a…

【Android】【设计模式】抽象工厂模式改造弹窗组件必知必会

写一个 Android 版本的抽象工厂弹窗 Manager 管理器,使用 DialogFragment 实现,这样能更贴近真实的开发场景。结构设计 抽象产品:BaseDialogFragment(继承 DialogFragment)具体产品:LoginDialogFragment, …

Win64OpenSSL-3_5_2.exe【安装步骤】

官网下载 注意:科学上网,可以加速下载速度! Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 下载后得到:Win64OpenSSL-3_5_2.exe 双击安装 修改安装路径: 默认就选择第一个。 重要提醒​…

华为云云原生架构赋能:大腾智能加速业务创新步伐

巨大的涡轮、细小的螺丝,一台航天飞机发动机的三维模型呈现在屏幕上,远程同事同步协作,一台复杂设备在工程师高效的协同中不断完善。深圳市大腾信息技术有限公司,正是这场工业变革的推动者之一。大腾智能以“云原生工业”的融合为…

基于https+域名的Frp内网穿透教程(Linux+Nginx反向代理)

系列文章目录 基于http公网ip的Frp内网穿透教程(win server) 基于http域名的Frp内网穿透教程(win serverIIS反向代理) 基于http公网ip的Frp内网穿透教程(Linux) 基于https域名的Frp内网穿透教程(LinuxNginx反向代理) 目录 系列文章目录 前言 一、Frp是什么? 1. …

裸机程序(1)

一、裸机裸机是一个在计算机硬件与软件开发领域高频出现的概念,核心定义是 “未安装操作系统(OS),仅包含硬件本身(或仅运行最底层硬件驱动 / 控制程序)的设备”。在电脑中,裸机会映射代码到cpu&…

95%企业AI失败?揭秘LangGraph+OceanBase融合数据层如何破局!​

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。不知道你们有没有遇到过,在我们一些实际落地的AI项目中,虽然前期“Demo 很惊艳,但上线后却无人问津”。你们有没有想…

树莓集团产教融合:数字学院践行职业教育“实体化运营”要求

在职业教育改革不断深化的背景下,“实体化运营” 成为推动职业教育高质量发展的重要方向。树莓集团积极响应这一要求,以产教融合为核心,打造数字学院,切实践行职业教育 “实体化运营”,为培养高素质数字领域专业人才探…

ELK 统一日志分析系统部署与实践指南(上)

#作者:张桐瑞 文章目录1 ELK 技术栈概述1.1ELK 核心组件详解1.2 ELK 工作流程2 ELK部署2.1 环境描述2.1.7 配置es集群下篇:《ELK 统一日志分析系统部署与实践指南(下)》 链接: [https://blog.csdn.net/qq_40477248/article/detail…

上位机知识篇---poweshellcmd

要理解 PowerShell 和 CMD 的区别,我们可以先打个通俗的比方:CMD 像老式功能机,只能干打电话、发短信这些 “基础活”;而 PowerShell 像智能手机,不仅能做基础操作,还能装 APP、玩复杂功能,甚至…

利用 Python 绘制环形热力图

暑假伊始,Coldrain 参加了学校举办的数模集训,集训的过程中,遇到了需要展示 59 个特征与 15 个指标之间的相关性的情况,在常用的图表不大合适的情况下,学到了一些厉害的图表,但是似乎千篇一律都是用 R 语言…

【序列晋升】27 Spring Cloud Sleuth给分布式系统装上透视镜

Spring Cloud Sleuth作为微服务架构中的核心监控组件,通过轻量级的无侵入式跟踪机制,解决了分布式系统中请求路径复杂、问题定位困难的痛点。它自动为每个服务请求创建唯一的Trace ID,并为每个服务间调用生成Span ID,形成完整的调…

Linux(2)|入门的开始:Linux基本指令(2)

一、基本指令介绍 回顾上篇博客Linux(1)|入门的开始:Linux基本指令-CSDN博客,我们已经学习了mkdir目录的创建,touch普通文件的创建,光有创建肯定是不行的,接下来就介绍我们的删除指令 1、rmdir指令&&rm指令 …

sv中forever如何结束

在 SystemVerilog 中,forever 循环本身无法自我结束。它的设计初衷就是创建一个永不终止的循环。 因此,要结束一个 forever 循环,必须从外部强制中断它。主要有以下两种方法:1. 使用 disable 语句(最常用和推荐的方法&…

关于熵减 - 从法拉第圆盘到SEG

我们清楚的知道法拉第圆盘发电机的原理。当导线切割磁感线的时候,会产生电流,当然电流产生需要的是电动势,也就是,这里写 不写 ,避免和电场强度混淆。根据上面的分析,我们知道磁场强度特斯拉 的单位&#x…

【机器学习】实战:市场增长点分析挖掘项目

在电商行业激烈竞争的背景下,精准挖掘市场增长点是企业保持竞争力的关键。本文基于拜耳官方旗舰店驱虫剂市场分析项目,先对原文核心内容进行梳理与解读,再续写关键的竞争分析模块,形成完整的市场增长点挖掘闭环,为企业…

【Day 18】21.合并两个有序链表 2.两数相加

文章目录21.合并两个有序链表题目:思路:迭代代码实现(Go):2.两数相加题目:思路:代码实现(Go):21.合并两个有序链表 题目: 将两个升序链表合并为…

Vue 3 WebSocket通信方案:从原理到实践

Vue 3 WebSocket通信方案:从原理到实践 在现代Web应用开发中,实时通信已成为许多应用的核心需求。从即时聊天到实时数据更新,用户对应用响应速度的期望越来越高。本文将深入剖析一个Vue 3环境下的WebSocket通信方案,包括基础封装与…