Skip to content

Commit 86aab0d

Browse files
authored
Merge pull request #970 from rahulrr-coder/fix/scroll-buttons
[Fix] Improve Scroll buttons UX
2 parents 854b79a + ad819d0 commit 86aab0d

3 files changed

Lines changed: 26 additions & 65 deletions

File tree

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,16 @@
1-
import React, { useEffect, useState } from "react";
1+
import React, { useState, useEffect } from "react";
22
import { FaArrowUp } from "react-icons/fa";
33

44
export default function ScrollBottomToTop() {
5-
const [showButton, setShowButton] = useState(false);
5+
const [isVisible, setIsVisible] = useState(false);
6+
7+
const toggleVisibility = () => {
8+
if (window.pageYOffset > 300) {
9+
setIsVisible(true);
10+
} else {
11+
setIsVisible(false);
12+
}
13+
};
614

715
const scrollToTop = () => {
816
window.scrollTo({
@@ -11,29 +19,25 @@ export default function ScrollBottomToTop() {
1119
});
1220
};
1321

14-
const handleScroll = () => {
15-
if (window.scrollY > 300) {
16-
setShowButton(true);
17-
} else {
18-
setShowButton(false);
19-
}
20-
};
21-
2222
useEffect(() => {
23-
window.addEventListener("scroll", handleScroll);
23+
window.addEventListener("scroll", toggleVisibility);
24+
2425
return () => {
25-
window.removeEventListener("scroll", handleScroll);
26+
window.removeEventListener("scroll", toggleVisibility);
2627
};
2728
}, []);
2829

2930
return (
30-
showButton && (
31-
<button
32-
onClick={scrollToTop}
33-
className="fixed right-5 bottom-20 z-50 cursor-pointer rounded-lg border-none bg-blue-600 p-2.5 text-white opacity-80 shadow-md transition-opacity duration-300 hover:bg-blue-700 hover:opacity-100"
34-
>
35-
<FaArrowUp />
36-
</button>
37-
)
31+
<div className="scroll-to-top">
32+
{isVisible && (
33+
<button
34+
onClick={scrollToTop}
35+
className="fixed right-5 bottom-5 z-50 cursor-pointer rounded-full border-none bg-gray-700 p-3 text-white shadow-lg transition-opacity duration-300 hover:bg-gray-800 dark:bg-gray-600 dark:hover:bg-gray-700"
36+
style={{ backgroundColor: "var(--ifm-color-primary)" }}
37+
>
38+
<FaArrowUp />
39+
</button>
40+
)}
41+
</div>
3842
);
3943
}

src/components/scroll/top-to-bottom.tsx

Lines changed: 0 additions & 41 deletions
This file was deleted.

src/pages/index.tsx

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import type { ReactNode } from "react";
66
import Head from "@docusaurus/Head";
77
import Header from "../components/header/header";
88
import ScrollBottomToTop from "../components/scroll/bottom-to-top";
9-
import ScrollTopToBottom from "../components/scroll/top-to-bottom";
9+
1010
import { BlogCarousel } from "../components/blogCarousel/blogCarousel";
1111
import OurProjects from "../components/ourProjects";
1212
import TopMateSection from "../components/topmate/TopMateSection";
@@ -107,11 +107,9 @@ export default function Home(): ReactNode {
107107
<div className="m-4">
108108
<FAQs />
109109
</div>
110-
111-
<ScrollTopToBottom />
112-
<ScrollBottomToTop />
113110
</main>
114111
</div>
112+
<ScrollBottomToTop />
115113
</Layout>
116114
);
117115
}

0 commit comments

Comments
 (0)