import React,{Component } from 'react'
import './App.css';
class App extends Component{
scrollToBottom() {
if (this.messagesEnd) {
const scrollHeight = this.messagesEnd.scrollHeight;//里面div的實際高度 2000px
const height = this.messagesEnd.clientHeight; //網頁可見高度 200px
const maxScrollTop = scrollHeight - height;
this.messagesEnd.scrollTop = maxScrollTop > 0 ? maxScrollTop : 0;
//如果實際高度大於可見高度,說明是有滾動條的,則直接把網頁被卷去的高度設置為兩個div的高度差,實際效果就是滾動到底部了。
}
}
render(){
return (
<div className="App">
<button onClick={this.scrollToBottom.bind(this)}>點擊這里跳轉到底部</button>
<div className='content' ref={(el) => { this.messagesEnd = el; }}>
<div className='content-message'></div>
</div>
</div>
);
}
}
export default App;
.content{
height:200px;
background-Color:#8a8a8a;
width:500px;
margin:0 auto;
overflow-Y:scroll
}
.content-message{
height:2000px;
background-Color:#8a8b8c;
margin:0 auto
}
scrollTop: 代表在有滾動條時,滾動條向下滾動的距離也就是元素頂部被遮住部分的高度。
react里面顯示的是虛擬的dom,所以先用ref獲取到當前的dom節點,接下來的思路就是,先判斷有沒有滾動條,也就是里面div的高度是否超過外面div的高度,如果沒有超過,那就不用管嘛,一個頁面就顯示完了,當然也就不需要滾動,如果里面的div高度比較高,外面的div出現滾動條了,則直接把div的
轉載
https://www.jianshu.com/p/bd6f3e868a18
scrollTop屬性設置為兩個div的高度差,效果也就是滾動到div的底部了。
