React定位到滾動條底部
阿新 • • 發佈:2020-07-20
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的scrollTop