UniApp H5 適配 PC 端新姿勢:打造跨設備一致體驗

在移動互聯網蓬勃發展的今天,很多開發者會選擇使用 UniApp 來開發多端應用,尤其是 H5 端,因其無需下載安裝即可訪問的特性,深受用戶喜愛。但 UniApp H5 應用在 PC 端直接打開時,往往會因為屏幕尺寸的巨大差異,導致界面被拉伸、布局錯亂,影響用戶體驗。

今天,我就來分享一個 UniApp H5 適配不同設備的解決方案,通過巧妙的頁面跳轉和布局設計,讓你的 H5 應用在 PC 端也能擁有良好的展示效果

方案核心思路

我們的目標是:當用戶在 PC 端(或大屏幕設備)訪問 H5 應用時,自動跳轉到一個模擬手機端展示的頁面;而在移動設備上,則正常顯示 H5 頁面。

這個方案主要通過兩個部分來實現:

  1. app.vue 中的頁面跳轉邏輯
  2. 專門為 PC 端準備的 pc.html 頁面

具體實現步驟

第一步:在 app.vue 中添加設備判斷與跳轉邏輯

在 UniApp 項目的 app.vue 文件中,我們可以利用 onShow 生命周期函數,在頁面顯示時進行設備信息的判斷,并根據判斷結果決定是否跳轉到 PC 端專用頁面。

onShow: function() {console.log('App Show')// #ifdef H5uni.getSystemInfo({success(e) {/* 窗口寬度大于420px且不在PC頁面且不在移動設備時跳轉至 PC.html 頁面 */if (e.windowWidth > 420 &&!window.top.isPC &&!/iOS|Android/i.test(e.system)) {// 跳轉到PC端專用頁面window.location.pathname = "/static/html/pc.html";}},});// #endif
}
第二步:創建 PC 端專用頁面 pc.html

在項目的 static 目錄下新建 html 文件夾,并在其中創建 pc.html 文件,內容如下:

<!DOCTYPE html>
<html lang=zh-CN><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1,minimum-scale=1"><title></title><meta name="Copyright" content="helang"><meta name="keywords" content=""><meta name="description" content=""><style type="text/css">body{margin: 0;background-color:  #f5f5f5;}iframe{width: 375px;height: 667px;background-color: #fff;box-sizing: border-box;border: none;}@media screen and (min-width: 450px) {iframe {position: fixed;top: 0;right: 0;bottom: 0;left: 0;margin: auto;border: 1px solid #f5f5f5;border-radius: 4px;}}</style><script type="text/javascript">window.isPC = true; // 標識當前為PC頁面window.onload = function(){/* 監聽電腦瀏覽器窗口尺寸改變,小于等于420px時跳回H5主頁面 */if(window.innerWidth <= 420){window.location.pathname = '/';}}</script></head><body><iframe src="/" id="iframe"></iframe><script src="https://pv.sohu.com/cityjson?ie=utf-8"></script><script type="text/javascript">var Ip=returnCitySN['cip']localStorage.setItem('Ip', Ip)</script></body>
</html>

實現效果

  • 當用戶在 PC 端(大屏幕設備)訪問你的 UniApp H5 應用時,會自動跳轉到pc.html,看到一個居中顯示的、模擬手機效果的應用界面。
  • 當用戶在移動設備(iOS/Android)訪問時,會正常顯示 H5 應用。
  • 當用戶在 PC 端調整瀏覽器窗口大小,使其寬度小于等于 420px 時,會自動跳回正常的 H5 頁面。

使用注意事項

  1. 路徑問題:確保 app.vue 中跳轉的路徑 /static/html/pc.html 與 pc.html實際存放的路徑一致。如果你的項目有特殊的部署路徑,可能需要相應調整。
  2. iframe 內容:pc.html 中 iframe 的 src 屬性設置為/,適用于項目部署在根目錄的情況。如果你的項目部署在子目錄,需要修改為對應的路徑。
  3. 樣式微調:可以根據自己的需求調整 pc.html 中的 CSS 樣式,比如 iframe的大小、邊框樣式、背景色等,使其更符合你的應用風格。
  4. IP 獲取:搜狐的 IP 獲取接口是免費的,但可能存在不穩定性。如果對 IP 獲取有更高要求,可以考慮使用其他更可靠的接口。

總結

通過這種方式,我們可以很巧妙地解決 UniApp H5 應用在 PC 端展示效果不佳的問題。核心思路是通過設備判斷和頁面跳轉,在 PC 端用一個模擬手機的 iframe 來展示應用,既保證了開發效率(無需單獨開發 PC 端),又提升了用戶體驗。

當然,這種方案更適合一些對 PC 端體驗要求不是特別高,或者主要用戶群體還是在移動端的應用。如果你的應用需要在 PC 端有更完善的體驗,那么開發專門的 PC 端頁面會是更好的選擇。

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

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

相關文章

【MySQL#4】函數 復合查詢 內外連接

&#x1f4c3;個人主頁&#xff1a;island1314 ?? 歡迎關注&#xff1a;&#x1f44d;點贊 &#x1f442;&#x1f3fd;留言 &#x1f60d;收藏 &#x1f49e; &#x1f49e; &#x1f49e; 生活總是不會一帆風順&#xff0c;前進的道路也不會永遠一馬平川&#xff0c;如何面…

C++常見面試題之一

一、語言基礎與內存管理const與constexpr的區別&#xff1f;應用場景&#xff1f; const&#xff1a;運行時常量&#xff0c;修飾變量/函數不可修改。constexpr&#xff1a;編譯期常量&#xff08;C11&#xff09;&#xff0c;用于優化計算&#xff08;如數組大小&#xff09;。…

Golang 語言中的指針介紹

介紹&#xff1a;指針式一種數據類型&#xff0c;用來存儲值的內存地址&#xff0c;為了便于理解&#xff0c;我們也可以把指針未內存地址&#xff0c;指針類型只占用內存4個或 8 個字節&#xff0c;在Golang 語言中&#xff0c;類型名稱加 * 表示改類型的指針類型。指針類型變…

Flink 狀態管理設計詳解:StateBackend、State、RocksDB和Namespace

為什么需要 StateBackend&#xff1f;—— 職責分離原則我們可以用一個銀行的例子來類比&#xff1a;State (如 ValueState, ListState) 就像是你的銀行卡。AbstractKeyedStateBackend 就像是銀行的整個后臺系統&#xff08;包括總服務器、數據庫、風控系統、會計系統等&#x…

櫥柜鉸鏈的革命:炬森精密如何以創新科技重塑家居體驗

在現代化家居設計中&#xff0c;櫥柜不僅是存儲空間的核心&#xff0c;更是生活品質的象征。而作為櫥柜的“關節”&#xff0c;櫥柜鉸鏈的性能直接影響著日常使用的便捷性、安全性和耐久性。然而&#xff0c;許多消費者在櫥柜使用中常遭遇噪音干擾、頻繁松動或早期損壞等痛點&a…

醫療系統國產化實錄:SQL Server國產替代,乙方保命指南

醫療行業的SQL Server替代&#xff0c;和普通業務系統完全不是一個量級——醫囑邏輯嵌套幾十層存儲過程、收費結算小數點錯位能引發醫患糾紛、電子病歷查詢慢一秒醫生直接拍桌子。作為被按在手術臺上的乙方PM&#xff0c;實測四款主流國產庫后&#xff0c;掏心窩子說句實話&…

WAIC 2025 盛大啟幕,深思考邀您解鎖端側 AI 新可能?!

2025 世界人工智能大會今日正式啟幕&#xff0c;深思考人工智能&#xff08;iDeepWise&#xff09;攜端側多模態大模型技術成果登陸展會&#xff0c;與行業伙伴共探端側 AI 發展新機遇。作為專注于類端側多模態大模型領域的創新力量&#xff0c;深思考此次重點展示了 iDeepWise…

MySQL相關概念和易錯知識點(2)(表結構的操作、數據類型、約束)

目錄1.表結構的操作&#xff08;1&#xff09;增加表&#xff08;2&#xff09;查看庫中所有的表&#xff08;3&#xff09;查看表每個列的約束&#xff08;4&#xff09;刪除整張表&#xff08;5&#xff09;刪除某個具體的列&#xff08;6&#xff09;增加某個具體的列&#…

1. Qt多線程開發

目錄方法1.繼承QThread使用案例總結方法2.將qobject對象moveToThread&#xff08;官方推薦&#xff09;使用案例總結方法3.QRunnable QThreadPool使用案例總結方法4.快速線程QtConcurrentQFutureWatcher使用案例總結代碼下載方法1.繼承QThread 需要實現QThread的抽象函數run …

ARM入門學習方法分享

首先認識什么是ARM?ARM公司簡介ARM是Advanced RISC Machines的縮寫&#xff0c;它是一家微處理器行業的知名企業&#xff0c;該企業設計了大量高性能、廉價、耗能低的RISC &#xff08;精簡指令集&#xff09;處理器。 1985年第一個ARM原型在英國劍橋誕生。公司的特點是只設計…

基于springboot的在線數碼商城/在線電子產品商品銷售系統的設計與實現

用戶&#xff1a;數碼產品&#xff0c;限時秒殺&#xff0c;種草分享&#xff0c;新品資訊&#xff0c;留言板&#xff0c;訂單管理&#xff0c;在線客服&#xff0c;購物車&#xff0c;個人中心管理員&#xff1a;個人中心&#xff0c;用戶管理&#xff0c;數碼分類管理&#…

Zookeeper學習專欄(十):核心流程剖析之服務啟動、請求處理與選舉協議

文章目錄前言一、服務端啟動流程1.1 啟動入口類&#xff1a;QuorumPeerMain1.2 集群模式啟動核心&#xff1a;runFromConfig1.3 QuorumPeer線程核心邏輯&#xff1a;run()1.4 關鍵子流程&#xff1a;數據恢復1.5 關鍵設計要點二、請求處理鏈&#xff08;責任鏈模式&#xff09;…

網絡基礎19--OSPF路由業務多區域

一、OSPF多區域必要性單區域問題&#xff1a;LSDB龐大 → 內存占用高&#xff0c;SPF計算開銷大LSA洪泛范圍廣 → 拓撲變化影響全域無法路由匯總 → 路由表膨脹&#xff0c;查找效率低2. 多區域優勢&#xff1a;1. 劃分區域&#xff1a;獨立LSDB&#xff0c;縮小數據庫規模2. 限…

MFC擴展庫BCGControlBar Pro v36.2新版亮點:圖形管理器等全新升級

BCGControlBar庫擁有500多個經過全面設計、測試和充分記錄的MFC擴展類。 我們的組件可以輕松地集成到您的應用程序中&#xff0c;并為您節省數百個開發和調試時間。 BCGControlBar專業版 v36.2已全新發布了&#xff0c;在這個版本中添加了一個新的擴展器控件、改進了網格和報表…

QT開發---網絡編程上

Qt Network 模塊Qt Network 模塊提供了豐富的類用于實現各種網絡通信功能&#xff0c;涵蓋 TCP、UDP、HTTP、FTP 等多種協議。 Qt 網絡類均為異步操作&#xff0c;通過信號槽處理結果&#xff0c;避免阻塞 UI 線程。在使用QT進行網絡編程之前&#xff0c;就必須在 CMakeLists.t…

[spring6: Mvc-函數式編程]-源碼解析

接口 ServerRequest public interface ServerRequest {HttpMethod method();URI uri();UriBuilder uriBuilder();default String path() {return requestPath().pathWithinApplication().value();}default RequestPath requestPath() {return ServletRequestPathUtils.getPar…

Linux DNS 服務器正反向解析

一、環境說明與準備工作 1.基礎信息 本次實驗用兩臺 Linux 主機&#xff0c;分別作為 DNS 服務端和客戶端&#xff0c;具體信息如下&#xff1a;服務端IP客戶端IP網址192.168.120.130192.168.120.128www.zy.com2.準備工作 關閉安全軟件&#xff1a;服務端和客戶端都要關閉防火墻…

歷史數據分析——中證旅游

中證旅游板塊走勢從月線級別來看2015年5月到2024年9月&#xff0c;月線上走出了一個震蕩中樞的月線級別下跌段&#xff1b;目前月線級別底部放巨量&#xff0c;總體還在底部震蕩&#xff0c;后續上漲的概率較大。從周線級別來看從2022年12月到2024年9月整體是下跌走勢&#xff…

OpHReda精準預測酶最佳PH

1.顯著改進&#xff1a;OpHReda通過檢索嵌入數據增強機制&#xff0c;顯著提高了酶最佳pH預測的準確性&#xff0c;相比現有方法提升了55%的F1分數。2.多尺度殘差輕注意力模塊&#xff1a;該模塊結合了殘差學習和多尺度特征提取&#xff0c;增強了模型對酶序列中殘差級信息的捕…

醫護行業在未來會被AI淘汰嗎?

隨著AI的迅速發展&#xff0c;似乎所有職業都有被AI替代的風險&#xff0c;那麼醫療領域作為一個高技術依賴性的行業&#xff0c;有機會被淘汰嗎?我們今天就來說說&#xff0c;幾乎不可能被AI淘汰的職業---護理。一) AI在護理中扮演的角色i.) 臨床工作支持1. 健康監測自動化即…