本人菜鸡,看不懂文档。又没有一个正经的中文解释文档,也没找到相关的内容,摸索了大半天算是找到我需要的效果。
react-sticky git地址
先贴代码看效果
<Sticky topOffset={-55}>
{({ style, isSticky }: any) => (
<DefaultTabBar
{...prop}
className={styles['site-custom-tab-bar']}
style={{ ...style, top: isSticky ? 55 : 0 }}
/>
)}
</Sticky>
主要使用了
isSticky用于判断当前是否是一个吸顶状态,然后设置样式内的top距上
然后设置topOffset表示距离顶部多少的时候进行吸顶。 此处用了-55表示距上55时就进行吸顶,刚才就和我设置的55高度匹配上,就不会出现到顶了再跳下来的情况。这里的55也是我蓝色框的高度。红色框则为本次设置吸顶的部分。
问题处理:吸顶抖动问题
问题原因:由于吸顶的时候,吸顶部分脱离了文档流,导致后面的内容顶上,但是内容不够,又脱离吸顶,就导致反复抖动。正常情况下是不会出现抖动的问题,源码当中有对吸顶后做一个padding-bottom的高度补偿,避免抖动。但是tabs的tabbar有一个margin-bottom,这个高度是不会有补偿的,如果刚好吸顶后顶上去的高度在这个范围内,就会导致抖动问题出现.
解决办法:如果是一般的吸顶内容,在设置吸顶的块外层添加一个同高度的div即可,让后面的数据不能顶上来。如果是tabs的tabPane, 可以先把tabbar的margin-bottom设置为0,再对tabPane设置一个margin-top