ScrollToTopButton.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. import React, {useEffect, useState} from 'react';
  2. import Styles from './ScrollToTopButton.module.css'
  3. import backTop from '../../assets/images/main/back_top.png';
  4. const ScrollToTopButton = () => {
  5. const [isVisible, setIsVisible] = useState(false);
  6. // 监听滚动事件
  7. useEffect(() => {
  8. const toggleVisibility = () => {
  9. if (window.scrollY > 300) {
  10. setIsVisible(true);
  11. } else {
  12. setIsVisible(false);
  13. }
  14. };
  15. window.addEventListener('scroll', toggleVisibility);
  16. return () => window.removeEventListener('scroll', toggleVisibility);
  17. }, []);
  18. const scrollToTop = () => {
  19. window.scrollTo({top: 0, behavior: 'smooth'});
  20. };
  21. return (
  22. isVisible && (
  23. <img
  24. src={backTop}
  25. onClick={scrollToTop}
  26. className={Styles.backToTop}
  27. onMouseEnter={(e) => (e.currentTarget.style.opacity = '1')}
  28. onMouseLeave={(e) => (e.currentTarget.style.opacity = '0.7')}
  29. />
  30. )
  31. );
  32. };
  33. export default ScrollToTopButton;