项目中,如果有需求1:点击页面A,点击单位院校字段,进入主键B选择列表,主键B点击任意院系,将选择的院系更新到页面A效果图2:院系选择list需要按字母做分类,右边的字母有个锚点定位页面A主键B别说了,哎,你怎么不用scroll-view,几行代码就可以了完成它!呵呵~要不是用过我还信,但是scroll-view在滚动的时候,不仅抖动,还会卡帧,然后滚动的太快了,会来回自由滚动数百次。简而言之,你不能使用它。免费大饼!(或者我知识不多,没有正确使用scroll-view,但是当我打开一个新页面,只使用scroll-view时,滚动时仍然存在上述问题。我认为不是我的问题,但是组件有bug~(满怀信心)然后就是我使用原生滚动的思路是1:使用原生overflow-y:scroll进行滚动,至少保证页面滚动流畅2:点击时需要的滚动距离定位右边的字母,包裹层的滚动距离+定位锚点到顶部的距离(可以是正数也可以是负数)//因为是在组件里,所以查询应该在(this)wx.createSelectorQuery().in(this).select(eleid).boundingClientRect((res)=>{letpageoffset=this.data.pageoffset;//当前滚动dom从顶部的位置letscrolltop=pageoffset+res.top;//res.top是被点击的锚点对应的dom距离top位置t的位置his.setData({pageoffset:scrolltop})wx.pageScrollTo({//注意这里的pageScrollTo,我用组件最外层的包裹层作为参考top=0scrollTop:scrolltop,duration:500})}).exec()然后你会发现,如果不滚动页面,只需要点击不同的锚点切换,就可以正常定位,但是一旦滚动,因为没有动态监测滚动距离wrappinglayer,一旦滚动,就不会发送了,我正常定位锚点不难,我们只需要监听外层的滚动事件,然后你会发现小程序没有办法监控一个非页面面对dom的滚动事件!(如果是我孤陋寡闻没找到,请把链接丢在我脸上!反正我没找到然后我就在想,那我不需要实时监控,我只需要拿anchor定位时wrappinglayer的offsettopwx.createSelectorQuery().in(this).select('.select-page-list-wrap').boundingClientRect((res)=>{this.setData({pageoffset:-res.top//这里注意距离值需要取反})}).exec()},一般来说,scrollTo(e){letoffsettop=0;wx.createSelectorQuery().in(this).select('.select-page-list-wrap').boundingClientRect((res)=>{offsettop=-res.top}).exec()},consteleid='#'+e.target.dataset。targetid;wx.createSelectorQuery().in(this).select(eleid).boundingClientRect((res)=>{letscrolltop=pageoffset+res.top;wx.pageScrollTo({scrollTop:scrolltop,duration:500})}).exec()}希望对你有帮助~
