前言
最近写使用uniapp写app,开发的时候写样式都是使用浏览器h5进行调试一切正常,但是最后进行手机真机调试的时候css样式出现了异常,本文归纳常见的问题
比如在h5页面显示正常:
但是在真机调试app的实现则显示:
H5正常但App异常的可能性
- 使用了不支持的选择器
非H5端不支持*选择器; - 组件和页面样式相互影响
非H5端默认并未启用 scoped,如需要隔离组件样式可以在 style 标签增加 scoped 属性,H5端为了隔离页面间的样式默认启用了 scoped。我之类就是这个问题导致的。 - webview浏览器兼容性
- 原生组件层级问题 H5没有原生组件概念问题,非H5端有原生组件并引发了原生组件层级高于前端组件的概念,要遮挡video、map等原生组件,请使用cover-view组件。
H5正常但小程序异常的可能性
- 同上
- v-html在h5和app-vue均支持,但小程序不支持
- 小程序要求连接的网址都要配白名单
小程序正常但App异常的可能性
vue页面在App端的渲染引擎默认是系统webview(不是手机自带浏览器,是rom的webview),在较老的手机上,比如Android4.4、5.0或iOS8,一些新出的css语法是不支持的。注意这不意味着不能使用flex,Android4.4也支持flex,只是不要使用太新的css。可以找Android4.4手机或使用pc模拟器实际测试下,大多数国产Android模拟器都是4.4或5.0。
小程序或App正常,但H5异常的可能性
- 在 uni-app 2.4.7 以前,H5端不支持微信小程序自定义组件,即wxcomponets下的组件,此时可能产生兼容问题。从 2.4.7 起,H5也支持微信自定义组件,不再存在这这方面兼容问题。
- App端使用了App特有的API和功能,比如plus、Native.js、subNVue、原生插件等
- 使用了小程序专用的功能,比如微信卡券、小程序插件、微信小程序云开发。对于云开发,建议使用可跨端的uniCloud。
App正常,小程序、H5异常的可能性
代码中使用了App端特有的plus、Native.js、subNVue、原生插件等功能
完整的问题及解决办法可查看官方文档 传送门