目 录CONTENT

文章目录

uniapp实现H5对PC的适配

萧瑟
2023-01-23 / 0 评论 / 3 点赞 / 855 阅读 / 1,076 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2023-07-03,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

使用uniapp做的h5页面,在PC端显示时,发现由于rpx单位计算基准值太大,导致页面排版布局错乱

思路

刚开始发现使用px单位不会导致页面布局混乱,但这对刚开启的项目友好,对已经成型的项目修改成本太高,风险也大,而且px是固定单位,在移动端显然没rpx好使;

今天去官方社区逛了一圈,发现有大神已经提出PC端适配方案了,就几句代码就OK了

1、新建一个pc.js

随便找个地方放着,内部代码如下(变量sw值的设置,你们觉得怎么好看怎么来吧,下面的是我根据我的感觉设置的,适配到8K屏幕了):

(function (){
 var u = navigator.userAgent,
  w = window.innerWidth;
 if (!u.match(/AppleWebKit.*Mobile.*/) || u.indexOf('iPad') > -1) {
  var sw = w*576/1920;
  window.innerWidth = sw<375?375:sw;
                window.onload = function() {
          window.innerWidth = w;
         }
 }
})();
2、在main.js里面引入pc.js

注意,pc.js一定要在App实例引入前引入,不然无效!!!

import '@/static/js/pc'

import Vue from 'vue'

import App from './App'

这样做的好处是刷新页面时,页面之前的栈还在,不会像用iframe那样刷新后就回到首页;

如果PC端要实现 1upx = 1rpx = 1px ,PC.js可以修改成这样

(function (){
 var u = navigator.userAgent,
  w = window.innerWidth;
 if (!u.match(/AppleWebKit.*Mobile.*/) || u.indexOf('iPad') > -1) {
  window.innerWidth = 750*(w / 1920);
  window.onload = function() {
   window.innerWidth = w;
  }
 }
})();

当然如果你的设计图不是1920,比如是1366,那下面就改成这样window.innerWidth = 750*(w / 1366);

tabbar的适配可以通过下面这种方式来进行进行

html, body, .uni-tabbar, .uni-page-head {
	max-width: 1000 rpx;
	background-color: white;
	margin: 0 auto;
}

weixin

3

评论区