小程序兼容浏览器(h5)总结

651 阅读2分钟

本文记录下一些对于微信小程序兼容h5踩过的坑。

不知道大家在写小程序的时候有没有遇到以下情况:在微信开发者工具以及真机上测试的时候都没有问题,但是用浏览器打开可能会出现布局错乱的情况。针对这种情况,首先想到的就是媒体查询啦。代码如下:

@media only screen and (min-width:700px){
		html{
			font-size: 13px;
			height: 100vh;
			overflow: hidden;
		}
		body {
			max-width: 375px;
			max-height: 667px;
			position:absolute;
			left:0;
			top: 0;
			bottom: 0;
			right: 0;
			margin: auto;
			border: solid 1px #e5e5e5;
			box-shadow: 0 5px 15px -5px rgba(0,0,0,.5);
		}
  }

直接给他设置个屏幕大于700px的时候宽高不让他撑起来(max-width、max-height),然后再修饰加工一波,屏幕居中起来。 上面的设置好整体的大小了。但是先页面里免不了你哪个地方用了fixed布局,那完了,芭比Q了,可能在h5上乱飞起来了。这时候我的解决方案是用css的计算属性calc(),先来简单介绍一波这个属性:

calc() 函数用于动态计算长度值。

  • 需要注意的是,运算符前后都需要保留一个空格,例如:width: calc(100% - 10px)
  • 任何长度值都可以使用calc()函数进行计算;
  • calc()函数支持 "+", "-", "*", "/" 运算;
  • calc()函数使用标准的数学运算优先级规则;

回归正题,怎么解决h5上fixed定位乱飞的问题呢?代码如下:

@media only screen and (min-width:700px){
		.batch-share{
			bottom: calc((100vh - 574px) / 2) !important;
			top: unset !important;
		}
	}

100vh是屏幕的高度,此处除以2有个好处:直接除以2找到屏幕中间的位置,然后再调。对比一下我对于类名为batch-share的元素原来的操作:

.batch-share{
			position: fixed;
			display: flex;
			flex-direction: column;
			align-items: center;
			top: 82%;
			border-radius: 50%;
			width: 90rpx;
			height: 90rpx;
			font-size: 20rpx;
			line-height: 110%;
              }

原来我进行的是fixed定位,top设置的82%。关于上面calc中的数据,是调位置的时候一点点找到的合适位置。 这个可能不是最好的解决方案,期待大佬评论补充!