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
英文地址,請注明出處:http://en.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通信方案,包括基礎封裝與…