React定位到滚动条底部

先看下效果图吧。

6375263-b17fc0955371b6e8.gif
Video_2019-09-26_181137-2.gif

主要是今天做了一个需求,打开聊天对话框的时候,滚动条自动滚动到底部,显示最近的聊天记录,本来也是挺简单的一个需求,可以对于一个接触React没多久的小白来说,还是花费了一些时间查找资料。我们是代码的搬运工,哈哈。参考连接也给大家看一下 https://stackoverflow.com/questions/37620694/how-to-scroll-to-bottom-in-react
先上代码在简单说两句。

app.js
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;
app.css
.content{
  height:200px;
  background-Color:#8a8a8a;
  width:500px;
  margin:0 auto;
  overflow-Y:scroll
}
.content-message{
  height:2000px;
  background-Color:#8a8b8c;
  margin:0 auto
}

这是用create-react-app新建的一个react项目,把app.js文件改了改。大家如果想看效果,直接新建个react的项目,然后把上面的代码粘过去即可。对了,app.css也修改一下,就两个div,大的套小的,大的高度固定显示滚动条,小的高度调高一点就行了。
react里面显示的是虚拟的dom,所以先用ref获取到当前的dom节点,接下来的思路就是,先判断有没有滚动条,也就是里面div的高度是否超过外面div的高度,如果没有超过,那就不用管嘛,一个页面就显示完了,当然也就不需要滚动,如果里面的div高度比较高,外面的div出现滚动条了,则直接把div的scrollTop属性设置为两个div的高度差,效果也就是滚动到div的底部了。

scrollTop: 代表在有滚动条时,滚动条向下滚动的距离也就是元素顶部被遮住部分的高度。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
React 中修改滚动条的样式可以通过 CSS 样式来实现。你可以使用 `::--scrollbar` 伪元素和相关属性自定义滚动条的样式。 首,在你的 CSS 文件或样式模块,可以使用 `::-webkit-scrollbar` 选择器来选中滚动条元素。例如: ```css /* 修改滚动条的样式 */ ::-webkit-scrollbar { width: 8px; /* 指定滚动条的宽度 */ } /* 修改滚动条的轨道样式 */ ::-webkit-scrollbar-track { background-color: #f1f1f1; /* 指定滚动条轨道的背景色 */ } /* 修改滚动条的滑块样式 */ ::-webkit-scrollbar-thumb { background-color: #888; /* 指定滚动条滑块的背景色 */ border-radius: 4px; /* 指定滚动条滑块的圆角半径 */ } /* 修改滚动条滑块在 hover 状态下的样式 */ ::-webkit-scrollbar-thumb:hover { background-color: #555; /* 指定滚动条滑块的背景色 */ } ``` 然后,将这些样式应用到需要定制滚动条的组件或容器上。你可以使用 `className` 属性将类名应用到相应的元素上,或者使用内联样式来设置。 ```jsx import React from 'react'; import './CustomScrollbar.css'; // 引入样式文件 const CustomScrollbar = () => { return ( <div className="custom-scrollbar"> {/* 内容 */} </div> ); } export default CustomScrollbar; ``` 这样,你就可以根据自己的需求来修改滚动条的样式。请注意,在不同的浏览器和操作系统中,滚动条的样式可能会有所差异,因此你可能需要针对不同的浏览器和操作系统进行调整和兼容处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李公子lm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值