我试图向下滚动用户在底部时,用户点击按钮。我真的很努力,但没有找到任何解决方案。有人可以请帮助我如何实现我的目标。谢谢
ruoxqz4g1#
您可以使用document.body.offsetHeight来获取页面的高度,并使用windows.scroll滚动到它。如果您需要支持IE11及更低版本,请使用window.scroll(0, document.body.offsetHeight);
document.body.offsetHeight
windows.scroll
window.scroll(0, document.body.offsetHeight);
import React from 'react'; function App() { function handleScroll() { window.scroll({ top: document.body.offsetHeight, left: 0, behavior: 'smooth', }); } return <button type="button" onClick={handleScroll}>Scroll</button>; }
fhity93d2#
有几种方法可以实现这一点:
const onClick = () => { window.scroll({ bottom: document.body.scrollHeight, // or document.scrollingElement || document.body left: 0, behavior: 'smooth' }); } ... return <button onClick={onClick} ... />
另一种方法是使用ref。您需要在页面底部添加一个元素,并在单击按钮后滚动到它:
ref
const bottomRef = React.useRef(); const onClick = () => { bottomRef.current.scrollIntoView(); } ... return ( <div className="container"> <button onClick={onClick} /> <div className="bottomContainerElement" ref={bottomRef} /> <div> )
3zwjbxry3#
安装react-scroll-button npm包
npm i react-scroll-button
使用代码
import React, {Component} from 'react' import ScrollButton from 'react-scroll-button' class ScrollComponent extends Component { render() { return ( <ScrollButton behavior={'smooth'} buttonBackgroundColor={'red'} iconType={'arrow-up'} style= {{fontSize: '24px'}} /> ); } }
pexxcrt24#
你可以使用useRef钩子来抓取特定的div。这是react和使用react钩子最推荐的方法。
useRef
import React, { useRef } from "react"; import "./styles.css"; export default function App() { const divRef = useRef(); return ( <div className="App"> <button onClick={() => { divRef.current.scrollIntoView({ behavior: "smooth" }); }} > Scroll to Bottom </button> <div className="bigDiv" /> <div className="bigDiv" /> <div className="bigDiv" /> <div className="bigDiv" ref={divRef}> Scrolled Here </div> </div> ); }
.App { font-family: sans-serif; text-align: center; } .bigDiv { height: 100vh; width: 100%; background: cyan; border: 1px solid violet; }
dzhpxtsq5#
只需将此函数放在单击事件上
const onButtonClick = () => { scroll.current?.scrollIntoView({ behaviour: "smooth" }); };
5条答案
按热度按时间ruoxqz4g1#
您可以使用
document.body.offsetHeight
来获取页面的高度,并使用windows.scroll
滚动到它。如果您需要支持IE11及更低版本,请使用window.scroll(0, document.body.offsetHeight);
fhity93d2#
有几种方法可以实现这一点:
另一种方法是使用
ref
。您需要在页面底部添加一个元素,并在单击按钮后滚动到它:3zwjbxry3#
安装react-scroll-button npm包
使用代码
pexxcrt24#
你可以使用
useRef
钩子来抓取特定的div。这是react和使用react钩子最推荐的方法。App.js
Styles.css
dzhpxtsq5#
只需将此函数放在单击事件上