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 => )} +
- +

@@ -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" })