uniapp微信小程序发布h5适配

本文介绍了在uniapp项目中,为实现微信小程序与H5的兼容,如何进行布局和字体适配。通过自定义模板路径和在H5配置中设置index.html,解决了PC和iPad上打开H5时出现的布局错乱问题。文章讨论了rpx在不同设备上的局限性,并提出使用rem单位能更好地保持多端一致性。
部署运行你感兴趣的模型镜像

背景

这次项目是要兼容微信小程序、h5的。目前开发完成发现,微信小程序和手机浏览器打开h5,页面都是正常的。在PC浏览器和ipad上打开H5,出现了布局和字体错乱。

解决步骤

自定义模板路径

在manifest.json H5配置中,填写 index.html 模板路径
在这里插入图片描述
这是为了方便些条件编译当在h5下的时候

在index.template.html中

<!DOCTYPE html>
<html lang="zh">
<head>
	<link rel="shortcut icon" href="<%= BASE_URL %>static/favicon.ico">
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="ie=edge">
	<title>
		<%= htmlWebpackPlugin.options.title %>
	</title>
	<script>
		var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') || CSS.supports('top: constant(a)'))
		document.write('<meta name="viewport" content="width=device-width, user-scalable=0, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' + (coverSupport ? ', viewport-fit=cover' : '') + '" />')
	</script>
	<link rel="stylesheet" href="<%= BASE_URL %>static/index.<%= VUE_APP_INDEX_CSS_HASH %>.css" />
</head>
<style type="text/css">
	/* #ifdef H5 */
	
	*{
	-webkit-text-size-adjust: none;
	}
	
	@media only screen and (min-width:700px){
		html{
			font-size: 13px;
			background-color: #fff;
			height: 100vh;
			overflow: hidden;
		}
		body {
			max-width: 375px;
			max-height: 667px;
			background: red;
			position:absolute;
			left:0;
			top: 0;
			bottom: 0;
			right: 0;
			margin: auto;
			border: solid 1px #e5e5e5;
		}
	/* #endif */
</style>
<body>
	<noscript>
		<strong>Please enable JavaScript to continue.</strong>
	</noscript>
	<div id="app"></div>
</body>
<script>
window.onload = function() {
document.addEventListener('touchstart', function(event) {
if (event.touches.length > 1) {
event.preventDefault()
}
})
document.addEventListener('gesturestart', function(event) {
event.preventDefault()
})
}
</script>
</html>

此时,由于设置了最大的宽度和高度。页面的效果就会跟手机上差不多了。
在这里插入图片描述

关于多端兼容的思考

在移动设备上也有很多屏幕宽度,设计师一般只会按照750px屏幕宽度出图。此时使用rpx的好处在于,各种移动设备的屏幕宽度差异不是很大,相对于750px微调缩放后的效果,尽可能的还原了设计师的设计。
但是,一旦脱离移动设备,在pc屏幕,或者pad横屏状态下,因为屏幕宽度远大于750了。此时rpx根据屏幕宽度变化的结果就严重脱离了预期,大的惨不忍睹。官网

但同时uniapp也是对这个问题做了适配的。

但我想说的是,前端小程序这块包括我有六位同学,项目开始时关于字体大小单位沟通过,最后觉得既然用uniapp了,那么就用 rpx。

从结果来看,在做兼容多端的时候,我尝试用rem发现它的表现是很好的。在ipad、PC浏览器的效果几乎和手机上的效果是一样的。

当然,关于这个问题大家肯定会有不同的看法,希望能找到较为完善的方法。

您可能感兴趣的与本文相关的镜像

EmotiVoice

EmotiVoice

AI应用

EmotiVoice是由网易有道AI算法团队开源的一块国产TTS语音合成引擎,支持中英文双语,包含2000多种不同的音色,以及特色的情感合成功能,支持合成包含快乐、兴奋、悲伤、愤怒等广泛情感的语音。

评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值