语言环境:react.js
+taro
场景: 我想在<ScrollView>
组件中使用粘性定位
在ScrollView中是不支持粘性定位的所以我们要使用一些华丽的操作
来实现这个功能
上代码
onScroll 这个事件,是你滚动时就会触发 返回值(
event.detail
={ scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}
)
<ScrollView scrollY onScroll={this.onscroll} >
ref 获取dom元素
<View className="box" ref={e => (this.navigatorone = e)} >定位盒子</View>
<ScrollView/>
css
.box{
position: fixed;
top: 50%;
z-index: 99;
height: 100px;
width: 100px;
}
逻辑
当用户开始滚动的时候,获取当前卷出去的高度,动态的赋值给需要固定的元素,这样就可以实现粘性定位了
js
navigatorone = '' //获取dom元素
onscroll= e => {
//1.判断当scrollTop到什么时候开始固定高度
if (e.detail.scrollTop > 617) {
this.navigatorone.style.top = 10 + 'px'
} else {
// 2. 如果不满足固定高度,就随着scrollTop进行变化
this.navigatorone.style.top = 617 - e.detail.scrollTop + 'px'
}
}