微信小程序的一些兼容性问题
记录一下在开发微信小程序的时候,遇到的一些兼容性~~(玄学)~~问题。
-
Skyline渲染模式
目前个人还不是很推荐使用Skyline。有些组件没有适配,会导致奇怪的兼容性问题,难以调整。
本人在小程序中引入了Echarts图表,vant组件。然后修改它们的样式。在Webview下,能保持和官方文档样式基本一致。但是在Skyline下,会出现各种神奇的问题。包括但不限于:
- 下拉菜单的出现动画消失,收起动画能保持。
- 盒子单边
border的圆角无法绘制,只绘制直线,直接写border可以绘制完整圆角的边框。 dropdown-menu的伪元素(小箭头)看起来在真机上失效了,不显示。- 由于伪元素在真机上不显示,导致图标丢失的问题。
- 一些CSS样式根本不生效,vant组件内部的CSS变量无效。
值得注意的是,在微信开发者工具-详情内的选项“开启Skyline渲染模式”不一定有效。它可能只控制模拟器的渲染。配置渲染模式应当在
app.json内进行。真正返回Webview的办法,就是在
app.json里删掉下面的代码:1
2
3
4
5
6
7
8
9
10
11
12"renderer": "skyline",
"rendererOptions": {
"skyline": {
"defaultDisplayBlock": true,
"defaultContentBox": true,
"tagNameStyleIsolation": "legacy",
"disableABTest": true,
"sdkVersionBegin": "3.0.0",
"sdkVersionEnd": "15.255.255"
}
},
"componentFramework": "glass-easel",
-
Echarts图表的滚动穿透问题
1
2
3<view class="echarts">
<ec-canvas type="2d" id="myChart" disable-scroll="true" canvas-id="myChart" ec="{{ec1}}" ></ec-canvas>
</view>假如你根据上面的代码,或者ehcarts的例子配置了图表,并且还给父级元素设置了scroll,允许其滚动,滚动之后,在模拟器上,就可能出现下面的问题。图表不会随着父元素位移。
正常渲染
错误渲染GitHub:为什么ec-canvas不能跟着直接父元素进行滚动 · Issue #940 · ecomfe/echarts-for-weixin
参考上面这个Issues,简单说就是微信小程序对canvas的不兼容,所以这个特性优化不了。但是这个情况在真机上不会出现。想要优化在模拟器上的问题,可以在上面的配置代码中加一句
force-use-old-canvas="true",强制用旧渲染模式,就可以了。但是此时真机上会出现图表随着滚动震颤的问题,解决办法也很简单,等上线时再删掉这句,就好了。
1
2
3<view class="echarts">
<ec-canvas type="2d" id="myChart" disable-scroll="true" canvas-id="myChart" ec="{{ec1}}" force-use-old-canvas="true"></ec-canvas>
</view>
持续更新中…(或许吧)
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 ElectroDragon's Blog!
