Skip to content

Commit

Permalink
View Transitions: do not animate same page navigation, but animate ha…
Browse files Browse the repository at this point in the history
…sh links to different pages (#8013)

* Links with hash marks are now supported if they lead to a different page

* treat links to same page equally, independent of hash or not

* Links to the same page do not trigger view transitions

* special treatment for trailing hash

* view transitions: simpler rule to exclude in-page links
  • Loading branch information
martrapp authored Aug 10, 2023
1 parent fc30b85 commit 86bee28
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
5 changes: 5 additions & 0 deletions .changeset/tender-tips-kneel.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'astro': patch
---

Links with hash marks now trigger view transitions if they lead to a different page. Links to the same page do not trigger view transitions.
6 changes: 5 additions & 1 deletion packages/astro/components/ViewTransitions.astro
Original file line number Diff line number Diff line change
Expand Up @@ -132,6 +132,10 @@ const { fallback = 'animate' } = Astro.props as Props;
}
}

if (state?.scrollY === 0 && location.hash) {
const id = decodeURIComponent(location.hash.slice(1));
state.scrollY = document.getElementById(id)?.offsetTop || 0;
}
if (state?.scrollY != null) {
scrollTo(0, state.scrollY);
}
Expand Down Expand Up @@ -235,7 +239,7 @@ const { fallback = 'animate' } = Astro.props as Props;
link.href &&
(!link.target || link.target === '_self') &&
link.origin === location.origin &&
!link.hash &&
location.pathname !== link.pathname &&
ev.button === 0 && // left clicks only
!ev.metaKey && // new tab (mac)
!ev.ctrlKey && // new tab (windows)
Expand Down

0 comments on commit 86bee28

Please sign in to comment.