diff --git a/src/components/BackToTopButton.astro b/src/components/BackToTopButton.astro
new file mode 100644
index 0000000000..98650959b4
--- /dev/null
+++ b/src/components/BackToTopButton.astro
@@ -0,0 +1,96 @@
+---
+import IconChevronLeft from "@/assets/icons/IconChevronLeft.svg";
+
+/*
+In #btt-btn-container, left position is `left-[calc((var(--container-3xl)/2)+50%+1rem)]`.
+This is because we use `max-w-3xl` in `PostDetails.astro`.
+If `max-width` in `PostDetails.astro` get updated, make sure to update the `var(--container-3xl)` as well.
+max-w-3xl => var(--container-3xl)
+max-w-4xl => var(--container-4xl)
+max-w-5xl => var(--container-5xl)
+etc...
+*/
+---
+
+
+
+
+
+
diff --git a/src/layouts/PostDetails.astro b/src/layouts/PostDetails.astro
index bc3f521a7c..285ecc5aba 100644
--- a/src/layouts/PostDetails.astro
+++ b/src/layouts/PostDetails.astro
@@ -8,6 +8,7 @@ import Datetime from "@/components/Datetime.astro";
import EditPost from "@/components/EditPost.astro";
import ShareLinks from "@/components/ShareLinks.astro";
import BackButton from "@/components/BackButton.astro";
+import BackToTopButton from "@/components/BackToTopButton.astro";
import { getPath } from "@/utils/getPath";
import { slugifyStr } from "@/utils/slugify";
import IconChevronLeft from "@/assets/icons/IconChevronLeft.svg";
@@ -109,22 +110,16 @@ const nextPost =
-
- {tags.map(tag => )}
-
+
-
+
+ {tags.map(tag => )}
+
-
+
@@ -270,16 +265,6 @@ const nextPost =
}
attachCopyButtons();
- /** Scrolls the document to the top when
- * the "Back to Top" button is clicked. */
- function backToTop() {
- document.querySelector("#back-to-top")?.addEventListener("click", () => {
- document.body.scrollTop = 0; // For Safari
- document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera
- });
- }
- backToTop();
-
/* Go to page start after page swap */
document.addEventListener("astro:after-swap", () =>
window.scrollTo({ left: 0, top: 0, behavior: "instant" })