横向scroll-view子元素宽度超过600导致的一系列问题
发布于 5 年前 作者 zhengjing 7493 次浏览 来自 问答

前提:

scroll-view作为页面顶部横向导航(scroll-x为true,scroll-with-animation为true,scroll-view在页面中为fixed定位,scroll-view的子元素总宽度超过600px)

  • 当前 Bug 的表现(可附上截图)

1,通过设置scroll-left去改变scroll-view的当前位置。当一次设置的改变值(设置值 - 初始值)大于600(左右),滚动动画无法一次完成,在下一次页面刷新的Tick中才能完成滚动。

2,当前页面上拉至低端,真机上继续上拉进入即将回弹的模式。如果顶端fixed定位的scroll-view的子元素宽度超过600,当页面继续上拉高度超过scroll-view本身加上其到页面顶端的高度时,该scroll-view中的子元素会闪动消失。释放页面回弹后,子元素重新出现。经页面审查,该过程scroll-view元素本身未动,其子元素消失。

  • 预期表现

1,无论scroll-view子元素横向宽度多长,能完成滚动动画,滚动至正确位置。

2,页面上拉,fixed定位的scroll-view元素中的子元素能正常显示。

  • 复现路径
  • 提供一个最简复现 Demo

<scroll-view class=“tab_scroll_lay_fixed” scroll-with-animation="{{true}}" scroll-x scroll-left="{{scrollLeft}}">

    <view class=“tab_item>标签很长很长很长</view>

<view class=“tab_item>标签很长很长很长</view>

<view class=“tab_item>标签很长很长很长</view>

<view class=“tab_item>标签很长很长很长</view>

<view class=“tab_item>标签很长很长很长</view>

<view class=“tab_item>标签很长很长很长</view>

</scroll-view>

<view class="tab_item">标签很长很长很长</view>

4 回复

第二个确实能重现,小程序框架并没有对子元素做任何操作,看起来是 iOS 下 fixed 元素 + -webkit-overflow-scrolling: touch; 的渲染bug,写一个同样的示例跑在safari也有问题,暂时没找到有什么方法可以规避

你好,请提供一下出现问题的机型和微信版本,以及能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

开始一直以为是代码写得有问题,经过很长一段时间的调试和真机测试后发现这个应该还是组件的问题,其中原理不明,请官方开发人员帮忙解惑一下

回到顶部