前端如何讓網頁頁面完美適配不同大小和分辨率屏幕

推薦使用postcss插件,它會自動將項目所有的px單位統一轉換為vw等單位(包括npm安裝的第三方組件),從而實現適配,具體配置規則可參考官網或npm網站介紹。

另外對于大屏的適配,需要縮放網頁,可使用autojs,參考https://blog.csdn.net/m0_71231013/article/details/131650562 。但它只能放大或縮小頁面(適合做大屏項目使用),不能讓頁面字體、div寬高等自動依據屏幕分辨率適配。

我的vue3項目使用postcss,首先在devDependencies安裝了以下包:

"postcss": "^8.4.38",
"postcss-import": "^16.1.0",
"postcss-loader": "^8.1.1",
"postcss-px-to-viewport": "^1.1.1",
"postcss-px-to-viewport-opt": "^0.0.4",

隨后,參考官網和一些參考資料,在項目根目錄(和package.json平級)新建配置文件postcss.config.js,內容如下:

export default {plugins: {'autoprefixer': {path: ['./src/*']},'postcss-import': {},'postcss-px-to-viewport-opt': {'viewportWidth': '1707', // 我的視窗寬度'viewportHeight': '791', // 我的視窗高度'unitPrecision': 5, // 指定`px`轉換為視窗單位值的小數位數(很多時候無法整除)'viewportUnit': 'vw', // 指定需要轉換成的視窗單位,建議使用vw'selectorBlackList': ['#nprogress'], // 指定不轉換為視窗單位的類'minPixelValue': 3, // 小于或等于`1px`不轉換為視窗單位'mediaQuery': false, // 允許在媒體查詢中轉換`px`// 'exclude': /(\/|\\)(node_modules)(\/|\\)/, // 可以自定義規則哪些文件不要轉換,例如這句讓包里的不會轉換,但通常無需配置}}
}

最后,如果使用了element-plus的el-message組件,它不能被postcss自動轉換,需要自己在項目根目錄的index.html的head配置:

<head><meta charset="UTF-8" /><!-- <link rel="icon" type="image/svg+xml" href="/vite.svg" /> --><link rel="icon" type="image" href="/AI.png" /><meta name="viewport" content="width=device-width, initial-scale=1" /><title>標題</title><style>.el-message {font-size: 16px;}</style>
</head>

這樣就配置完成了!無論是在瀏覽器隨意縮放,或者換不同的瀏覽器查看,網頁都能完美適配!

我總結出寫項目應遵循以下適配規則:

  1. 在App.vue頁面設置全局的字體顏色、字體大小作為項目默認,避免意外情況,讓頁面寬100vw,高100vh

  2. font-size等單位不要用large、medium等沒有明確單位的寫法!!!全部禁用px單位,特別是1px、2px這種無法被postcss轉換的微小長度!統一用vw、vh或者百分比;

  3. 記得電腦系統、瀏覽器調成深色模式,觀察網站是否會有文字變白等異常現象并修復;

  4. 可以將網頁用瀏覽器的手機顯示模式,調整網頁大小,例如1920×1080,觀察不同大小模式網頁是否適配;將網頁進行縮放,觀察不同縮放倍率下,是否出現不適配問題。

  5. 完成適配具體做法:安裝postcss,項目根目錄新建配置文件postcss.config.js,記得別用exclude排除node_modules,否則postcss無法將包里的px樣式也一起轉為vw;對于el-message組件,單獨在項目的index.html文件的style里,設置 .el-message { font-size: 16px;},即可保證el-message組件顯示正常。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/43664.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/43664.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/43664.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

歐姆龍安全PLC及周邊產品要點指南

電氣安全、自動化設備作業安全&#xff0c;向來是非常非常之重要的&#xff01;越來越多的客戶在規劃新產線、改造既有產線的過程中&#xff0c;明確要求設計方和施工方將安全考慮進整體方案中進行考慮和報價&#xff01;作為一名自動化電氣工程師&#xff0c;尤其是高級工程師…

養寵經驗分享貓咪經常掉毛怎么辦?最值得買的寵物空氣凈化器分享

身為資深鏟屎官&#xff0c;深知若偷懶不打掃&#xff0c;家中便成貓毛紛飛、異味繚繞的戰場&#xff0c;尤其換季時&#xff0c;更是雪上加霜。長期處于這樣的環境&#xff0c;不僅我們頭疼眼澀、咳嗽氣喘&#xff0c;對老人、小孩、孕婦等敏感群體更是健康大敵。 幸運的是&a…

Vagrant配合VirtualBox搭建虛擬機

目錄 前言一、軟件下載及安裝1.下載2.安裝擴展&#xff1a; 二、創建一個虛擬機1.Vagrant官方鏡像倉庫 三、使用遠程工具連接虛擬機1.修改相關配置文件 四、虛擬機克隆及使用1.通用配置2.簡單搭建一個java環境3.克隆虛擬機1.重命名虛擬機&#xff08;可選&#xff09;2.打包指定…

靶場練習 手把手教你通關DC系列 DC1

DC1靶場通關教程 文章目錄 DC1靶場通關教程前言一、信息收集1.主機存活2.端口收集3.網頁信息收集4.目錄收集4.1 Nikto4.2 Dirb 信息收集總結 二、漏洞發現與利用1. 發現2. 利用 三、FlagFlag1Flag2Flag3Flag4Flag5(提權) 前言 本次使用的kali機的IP地址為192.168.243.131 DC1的…

機器學習 - 比較檢驗

列聯表 列聯表&#xff08;Contingency Table&#xff09;是一種用于顯示兩個或多個分類變量之間關系的表格。它廣泛應用于統計學中的分類數據分析&#xff0c;尤其在獨立性檢驗和關聯性分析時。列聯表的每個單元格展示了相應分類變量組合的頻數&#xff08;或比例&#xff09…

【2024_CUMCM】LINGO入門+動態規劃

目錄 什么是動態規劃 怎么使用動態規劃&#xff1f; 例題&#xff1a;最短路線問題 2020b-問題一 穩定性分析 靈敏度分析 什么是動態規劃 基本想法&#xff1a;將原問題轉換為一系列相互聯系的子問題&#xff0c;然后通過逐層遞推求得最后的解 基本思想&#xff1a;解決…

X12端口配置指南:ISA ID、測試指示符與997

通過知行之橋EDI系統實現X12 & 標準XML之間的格式轉換時&#xff0c;需要完善交換頭ISA ID及其限定符、測試標識符以及997的相關配置。 在X12文件中有兩組EDI ID對&#xff0c;分別是發送方 ID 限定符 及發送方ID &#xff0c;接收方 ID 限定符及接收方ID。 比如&#xf…

STM32Cubemx配置生成 Keil AC6支持代碼

文章目錄 一、前言二、AC 6配置2.1 ARM ComPiler 選擇AC62.2 AC6 UTF-8的編譯命令會報錯 三、STM32Cubemx 配置3.1 找到stm32cubemx的模板位置3.2 替換文件內核文件3.3 修改 cmsis_os.c文件3.4 修改本地 四、編譯對比 一、前言 使用keil ARM compiler V5的時候&#xff0c;編譯…

RK3568 buildroot 使用dropbear實現ssh遠程的方法

RK3568 buildroot 使用dropbear實現ssh遠程的方法 文章目錄 RK3568 buildroot 使用dropbear實現ssh遠程的方法前言一、創建S99dropbear.sh腳本二、創建sshd_config三、添加root賬戶密碼到系統驗證登錄前言 rk3568 linux 的sdk中,buildroot已經集成了dropbear的所需的lib庫環境…

交替打印-GO

1 兩個channel 版本 package mainimport ("fmt""sync")var wg sync.WaitGroup var c1 chan int var c2 chan intfunc A(){defer wg.Done()for i:0;i<10;i {<-c1fmt.Println(2*i)c2<-1 //牽引協程} } func B(){defer wg.Done()for i:0…

Java內存區域與內存溢出異常(自動內存管理)

序言&#xff1a;Java與C之間有一堵由內存動態分配和垃圾收集技術所圍成的高墻&#xff0c;墻外面的人想進去&#xff0c;墻里面的人卻想出來。 1.1概述 對于從事C、C程序開發的開發人員來說&#xff0c;在內存管理領域&#xff0c;他們既是擁有最高權力的“皇帝”&#xff0c…

使用OpenCV在按下Enter鍵時截圖并保存到指定文件夾

使用OpenCV在按下Enter鍵時截圖并保存到指定文件夾 在這篇博客中&#xff0c;我們將介紹如何使用OpenCV庫來實現一個簡單的功能&#xff1a;在按下Enter鍵時從攝像頭截圖并保存到指定的文件夾中。這個功能可以用于各種應用&#xff0c;例如監控系統、視頻捕捉等。 前置條件 …

在FPGA程序中Handshake(握手)和Register(寄存器)區別

在FPGA程序中&#xff0c;Handshake&#xff08;握手&#xff09;和Register&#xff08;寄存器&#xff09;是兩種不同的通信和數據傳輸機制。它們各有特點和適用場景。以下是它們的區別和應用場景的詳細解釋&#xff1a; Register&#xff08;寄存器&#xff09; 特點&#…

SQLServer用戶們,你們攤上大事了!

最近一段時間&#xff0c;我們經常會收到了許多用戶的咨詢&#xff0c;問我們何時能納管SQLServer&#xff1f;耐不住小伙伴們的猛烈催促及熱切期待&#xff0c;本不想納管SQLServer的研發團隊也抓緊將這項需求提上日程。并在DBdoctor v3.2.2版本中成功實現了對SQLServer的納管…

班級錄取查詢系統如何制作

在教育的長河中&#xff0c;我們每位老師都曾面臨過這樣一個問題&#xff1a;如何高效、準確地完成班級錄取查詢的任務&#xff1f;記得在以往&#xff0c;每當新學期伊始&#xff0c;我們不得不手忙腳亂地整理學生名單&#xff0c;然后逐一通知他們所在的班級。這個過程不僅耗…

谷歌Google Ads新賬號推廣方案

第一階段重點 推廣地區優化&#xff1a;分析投放國家的數據&#xff0c;剔除高花費低轉化的國家&#xff0c;將預算重新分配給高性價比的國家&#xff0c;從而降低詢盤成本并增加詢盤數量。關鍵詞優化&#xff1a;識別并暫停或降價高成本低回報的關鍵詞&#xff0c;減少詢盤成本…

《mysql篇》--索引事務

索引 索引的介紹 索引是幫助MySQL高效獲取數據的數據結構&#xff0c;是一種特殊的文件&#xff0c;包含著對數據表里所有記錄的引用指針&#xff0c;因為索引本身也比較大&#xff0c;所以索引一般是存儲在磁盤上的&#xff0c;索引的種類有很多&#xff0c;不過如果沒有特殊…

[ios-h5]在ios系統瀏覽器中輸入框得到焦點時頁面自動放大

問題&#xff1a; 在ios系統瀏覽器中輸入框得到焦點時頁面自動放大。 解決&#xff1a; 添加meta標簽。 <meta name"apple-mobile-web-app-capable" content"yes" /> <meta name"viewport" content"widthdevice-width, initial-…

隱式類型轉換 算術轉換

目錄 整型提升 間接證明整型提升的代碼案例 算術轉換 整型提升 何為整型提升&#xff1a; C語言的整型算術運算總是至少以缺省&#xff08;默認&#xff09;整型類型的精度來進行的 為了獲得這個精度&#xff0c;表達式中的字符類型和短整型操作數在使用之前被轉換為普通整…

基于SpringBoot實現輕量級的動態定時任務調度

在使用SpringBoot框架進行開發時&#xff0c;一般都是通過Scheduled注解進行定時任務的開發&#xff1a; Component public class TestTask {Scheduled(cron"0/5 * * * * ? ") //每5秒執行一次public void execute(){SimpleDateFormat df new SimpleDateFormat(…