zoukankan      html  css  js  c++  java
  • 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;
      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
    苦心人,天不负
  • 相关阅读:
    vue-router 实践
    修改vue中<router-link>的默认样式
    JSON.parse() 与 JSON.stringify() 的区别
    JS 中的异步操作
    CSS3 box-sizing:border-box的好处
    element ui 栅格布局
    css overflow用法
    koa中间件机制
    canvas 入门
    前端面试题:淘宝首页用了多少种标签
  • 原文地址:https://www.cnblogs.com/taxun/p/13346699.html
Copyright © 2011-2022 走看看