From 7cd11f7e2aaa79a8c5b2cfc41f1cce08f47cb7d5 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 10 Aug 2026 14:27:12 +0000 Subject: [PATCH] Let visitors push the project gallery about themselves The gallery on the landing page moved on rails: `UMarquee` animates its content in CSS, and a CSS animation is not a scroll position, so a trackpad swipe, a touch drag or a mouse drag had nothing to take hold of. Anyone wanting a second look at a card that had just gone past had to wait for it to come round again. `DraggableMarquee` lays the same repeated content out in a real horizontal scroller and drifts it by nudging `scrollLeft` a fraction of a pixel each frame, which makes the drift one more writer of a position the visitor can write to as well. Scrolling, swiping, dragging, momentum and the keyboard then all work because the browser already does them. It stands aside while it is being used: the drift stops under the pointer, during a drag, while a card holds focus, for a moment after any scrolling of the visitor's own, off screen, and entirely for anyone who asks for reduced motion. A drag that ends over a card is not taken for a visit to it, and the duplicated copies are hidden from screen readers and taken out of the tab order without being made inert, which would have stopped the clicks as well. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_015aCGjKwtBpk8NdVKxQiCRA --- app/components/DraggableMarquee.vue | 285 ++++++++++++++++++++++++++++ app/components/landing/Hero.vue | 7 +- 2 files changed, 288 insertions(+), 4 deletions(-) create mode 100644 app/components/DraggableMarquee.vue diff --git a/app/components/DraggableMarquee.vue b/app/components/DraggableMarquee.vue new file mode 100644 index 0000000..4383604 --- /dev/null +++ b/app/components/DraggableMarquee.vue @@ -0,0 +1,285 @@ + + + diff --git a/app/components/landing/Hero.vue b/app/components/landing/Hero.vue index 6b098ed..f6ba56a 100644 --- a/app/components/landing/Hero.vue +++ b/app/components/landing/Hero.vue @@ -132,9 +132,8 @@ defineProps<{ - - +