Commit graph

6 commits

Author SHA1 Message Date
07a7386e1d Move scripts and stylesheets into /assets
To keep things organised put the assets supporting pages into
sub-folders in /assets.
2025-02-03 13:32:15 +01:00
937d3d3cfb Add clamping of perspective origin in Viewport
If there are elements deep into the viewport near the top or bottom they
will end up obscured by the edge of the viewport when scrolling.  This
may be undesirable in some cases.  Implement a clamping of the allowed
range of the perspective origin to give better control over the
perspective and what it obscures.
2025-02-02 15:46:53 +01:00
8a600420b5 Set perspective-origin directly
Workaround issue in Safari where setting the perspective origin using a
var() expression for one of the axes does not apply correctly causing
the 3d parallax effect to be lost.
2025-02-02 15:46:53 +01:00
e5ba70d6a9 Prevent perspective shifts when browser toolbar hides
When scrolling the page on mobile and the toolbar gets hidden or made
visible again as a result of scrolling the browser reports the size of
the page having changed when the scrolling ends, which in turn causes
perspective shifts when the finger is lifted from the screen.

Try to work around this by anticipating this resize and calculating the
perspective as if the screen hadn't changed size.

While window.visibleViewport and window.screen in theory could have been
used to determine exactly where and when the browser toolbar is present,
it was found through testing that neither Chrome nor Firefox on Android
reports useful values through these APIs, and instead pretended that the
inner viewport was the whole screen.
2025-02-02 15:46:53 +01:00
78d3f56672 Adjust perspective origin if viewport is near vertical edges
If the origin is set to the center of the screen for a small 3d element
that's near the top or bottom, then it looks out of place and can't be
scrolled to fit nicely in view.  Adjust the origin to stay inside the
bounds of the viewport when scrolled to the edge of the screen in this
case.
2025-02-02 15:46:31 +01:00
49a329ac43 Add 3d Viewport component
Implement a Viewport component and associated update script that allows
rendering 3d content inside it.  This is based on the implementation
used at Furnavia for their 2025 website.
2025-02-02 15:34:16 +01:00