关于uniapp中 app打包真机测试以及小程序编译后css样式失效问题的原因及解决方案

2,116 阅读3分钟

最近使用uniapp写app、微信小程序 ,开发的时候样式都是使用浏览器h5进行调试一切正常,但是运行到微信开发者工具或打包apk文件 真机测试时,css出现异常,本文将归纳常见的异常及解决方案。

异常一:H5显示正常但APP异常的可能性

1. 使用了不支持的选择器

  • 非H5端不支持 * 选择器

2. 组件和页面样式相互影响

  • 非H5端默认并未启用scoped,如果需要隔离组件样式可以在style标签增加scoped属性。
  • H5端为了隔离页面或组件间的样式是默认启用了scoped,我之前就遇到过这个问题。
  •  <style lang="scss" scoped ></style> 
    

3.原生组件层级问题

  • H5没有原生组件概念,非H5有原生组件并引发了原生组件层级高于前端组件的概念,想要遮挡video、map等原生组件,请使用cover-view组件。

4.1. webview浏览器兼容性

  • 对Android版本进行适配。对于android 3.0以下版本,进行兼容性处理。对于android3.0以下版本放在shouldOverrideUrlLoading中的逻辑放在onPageStarted方法中去处理。

异常二:H5正常但小程序异常的可能性

1.使用了小程序不支持的选择器

  • 小程序 wxss中不容许使用的选择器有 标签选择器、ID选择器、属性选择器等

2. v-html在h5和app-vue均支持

  • 小程序不支持 v-html

3. 小程序要求连接的网址都要配白名单

异常三:小程序正常但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。
  • 小程序不存在浏览器兼容问题,它内置了几十M自己的定制webview。所以如果你的H5和小程序界面正常,而App界面异常,大多是因为css兼容性。

异常四:## 小程序或App正常但H5异常的可能性

1.使用了小程序专用的功能

  • 比如 小程序插件、云开发 、微信卡券等

2.自定义组件的兼容性问题

  • 在 uni-app 2.4.7 以前,H5端不支持微信小程序自定义组件,即wxcomponets下的组件,此时可能产生兼容问题。从 2.4.7 起,H5也支持微信自定义组件,不再存在这这方面兼容问题。

3.APP端使用了APP特有的API和功能

  • 比如 plus、Native.js、subNVue、原生插件等

异常五:APP正常但小程序、H5异常的可能性

  • 代码中使用了App端特有的plus、Native.js、subNVue、原生插件等功能

完整的问题及解决方案可以查看 官方文档 点击传送