1. 程式人生 > 實用技巧 >React定位到滾動條底部

React定位到滾動條底部

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
屬性設定為兩個div的高度差,效果也就是滾動到div的底部了。 轉載https://www.jianshu.com/p/bd6f3e868a18