背景
项目使用uniapp开发的小程序,最近在对快手小程序进行兼容时,发现了一个问题——picker弹出不是从底部出来的
使用picker组件二次封装的自定义组件,在点击picker时,底部弹出的弹出框定位并不是从底部弹出,而是相对于组件的使用位置
排查
- 一开始我以为是picker的弹出框可能是基于外层的元素定位,便把所有外层的元素全部注释,运行之后,picker是从底部弹出了,功能正常。
- 然后再由内到外逐层开放,最后在其中一层父元素中,发现了端倪,当这层元素开放时,picker的弹出不是从底部了,而是相对于该元素的底部。
- 我便定位到该元素的样式,通过对样式也进行同样的方式排查,先注释,再逐个开放,最后在一个属性上面又复现问题了,就是filter
解决
本来使用这个属性是要给盒子加个阴影的,只能换成box-shadow
了
再次复现
- 自定义组件使用中,又又又发现了这个问题
- 通过再再次排查发现我又踩了一坑,在组件外层元素中使用了
transform
,这个属性也会导致position
定位变成相对于使用了transform
属性的元素 - 原本使用
transform
是用来位移的,改成了用margin
来进行位移