在挂载更新里面判断滚动条的距离(滚动条不能overflow: auto 踩坑)
componentDidMount(){
window.addEventListener('scroll' , ()=>{
let scrollTop = document.documentElement.scrollTop || document.body/scrollTop;
if(scrollTop > 500){
this.setState({
show : true
})
}else{
this.setState({
show : false
})
}
})
}
在this.state= ({})定义一个显示的变量
constructor(props){
super(props)
this.state = ({
show : false
})
}
在jsx语法里面
render() {
let { show } = this.state;
return ( <div className="common-back">
{
show &&
<div onClick={this.goTo} className="iconfont icon-huidaodingbu1"></div>
} </div>
);
}
然后点击返回顶部,有动画效果的 , 没有动画用 window.scrollTo(0,0);
goTo(){
let scrollToTop = window.setInterval(function() {
let pos = window.pageYOffset;
if ( pos > 0 ) {
window.scrollTo( 0, pos - 20 ); // how far to scroll on each step
} else {
window.clearInterval( scrollToTop );
}
}, 2);
}