前言:
使用uniapp做的h5页面,在PC端显示时,发现由于rpx单位计算基准值太大,导致页面排版布局错乱
思路:
刚开始发现使用px单位不会导致页面布局混乱,但这对刚开启的项目友好,对已经成型的项目修改成本太高,风险也大,而且px是固定单位,在移动端显然没rpx好使;
今天去官方社区逛了一圈,发现有大神已经提出PC端适配方案了,就几句代码就OK了,突然发现我真是蠢啊,┭┮﹏┭┮
新建一个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;
}
}
})();
然后再main.js里面引入pc.js
注意,pc.js一定要在App实例引入前引入,不然无效!!!
1 2 3 |
|
这样做的好处是刷新页面时,页面之前的栈还在,不会像用iframe那样刷新后就回到首页;
pc.js修改成下面这样, PC端样式就可以实现1upx = 1rpx = 1px;这样非常方便的1:1还原设计图了
当然如果你的设计图不是1920,比如是1366,那下面就改成这样window.innerWidth = 750*(w / 1366);
(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;
}
}
})();
tabbar的适配可以通过下面这种方式来进行进行
html, body, .uni-tabbar, .uni-page-head {
max-width: 1000 rpx;
background-color: white;
margin: 0 auto;
}
以上内容就是uniapp对H5的PC端兼容方法,并且不会影响微信小程序和H5的移动端
欢迎大家关注我的公众号「踏浪而行生活圈」,这里不仅有更多好玩的内容,还会同步更新 踏浪而行 最新资讯,让你时刻掌握科技前沿,快来加入我们吧!