feat: add scroll animations

This commit is contained in:
Stefan Imhoff
2025-12-05 12:26:50 +01:00
committed by Stefan Imhoff
parent b2d42e28d8
commit b49b0f95fc
22 changed files with 41 additions and 7 deletions

View File

@@ -18,7 +18,7 @@ const { entries } = Astro.props;
> >
{ {
entries.map(({ slug, data }) => ( entries.map(({ slug, data }) => (
<li class="journal-card image-shadow group"> <li class="slide journal-card image-shadow group">
<Link <Link
class="journal-card-link group relative block h-full w-full group-hover:scale-100" class="journal-card-link group relative block h-full w-full group-hover:scale-100"
href={`/${slug}/`} href={`/${slug}/`}

View File

@@ -2,7 +2,7 @@
title: Bamboo Illustration title: Bamboo Illustration
date: 2014-12-12 date: 2014-12-12
format: 100-end format: 100-end
class: bamboo-illustration class: bamboo-illustration slide
sort: 90 sort: 90
categories: ["Illustration"] categories: ["Illustration"]
intro: I created the bamboo illustration in 2006 for my Martial Arts website using Adobe Illustrator and the gradient grid tool. 2015 I decided to use my bamboo as SVG on my website. Unfortunately, the gradient tool is not supported in SVG and I needed to recreate my bamboo with linear, radial, and other supported gradients in Affinity. intro: I created the bamboo illustration in 2006 for my Martial Arts website using Adobe Illustrator and the gradient grid tool. 2015 I decided to use my bamboo as SVG on my website. Unfortunately, the gradient tool is not supported in SVG and I needed to recreate my bamboo with linear, radial, and other supported gradients in Affinity.

View File

@@ -4,6 +4,7 @@ date: 2017-06-23
format: 50-end format: 50-end
sort: 110 sort: 110
categories: ["Writing", "Graphic Design"] categories: ["Writing", "Graphic Design"]
class: slide
intro: I wrote this book in 2017 out of the essays Ive written on my Martial Arts website in the last 20 years. Its a book in German about the Ninja and their secret art of Ninjutsu. I also designed the book cover for my book. The book was written with GitBook and can be read or downloaded for free as PDF, ePub, or Mobi eBook. intro: I wrote this book in 2017 out of the essays Ive written on my Martial Arts website in the last 20 years. Its a book in German about the Ninja and their secret art of Ninjutsu. I also designed the book cover for my book. The book was written with GitBook and can be read or downloaded for free as PDF, ePub, or Mobi eBook.
image: image:
src: /assets/images/projects/thumbnails/book-kogakure.webp src: /assets/images/projects/thumbnails/book-kogakure.webp

View File

@@ -5,6 +5,7 @@ format: 50-end
sort: 140 sort: 140
showcase: true showcase: true
categories: ["Web Design", "Web Development", "Photography"] categories: ["Web Design", "Web Development", "Photography"]
class: slide
intro: "I created this Photography Blog for one of my hobbies: I explore the city of Hamburg, mostly walking, and sometimes biking to find out more about the individual districts and to shoot photos. The current design is the 2nd iteration." intro: "I created this Photography Blog for one of my hobbies: I explore the city of Hamburg, mostly walking, and sometimes biking to find out more about the individual districts and to shoot photos. The current design is the 2nd iteration."
description: I explore Hamburg, mostly walking, sometimes biking to find out more about the individual districts and to shoot photos. description: I explore Hamburg, mostly walking, sometimes biking to find out more about the individual districts and to shoot photos.
image: image:

View File

@@ -4,6 +4,7 @@ date: 2017-08-01
format: 50-start format: 50-start
sort: 170 sort: 170
categories: ["Typeface Design", "Graphic Design"] categories: ["Typeface Design", "Graphic Design"]
class: slide
intro: The Iga Ninja Cipher Font was created by me of an image provided by the Iga Ninja Museum in Japan and is said to be a font for correspondence in cipher. It was a fun personal project to learn how to create a typeface. intro: The Iga Ninja Cipher Font was created by me of an image provided by the Iga Ninja Museum in Japan and is said to be a font for correspondence in cipher. It was a fun personal project to learn how to create a typeface.
image: image:
src: /assets/images/projects/thumbnails/ingo-iga-ninja-cipher.webp src: /assets/images/projects/thumbnails/ingo-iga-ninja-cipher.webp

View File

@@ -4,6 +4,7 @@ date: 2015-01-01
format: 50-start format: 50-start
sort: 30 sort: 30
categories: ["Poetry", "Writing"] categories: ["Poetry", "Writing"]
class: slide
intro: I started writing Haiku poetry some years ago inspired by the works of the Japanese Haiku poet Matsuo Bashō. I think Haiku is a fun, creative way to use limitation and brevity while saying something meaningful. intro: I started writing Haiku poetry some years ago inspired by the works of the Japanese Haiku poet Matsuo Bashō. I think Haiku is a fun, creative way to use limitation and brevity while saying something meaningful.
more: more:
text: Read Haiku text: Read Haiku

View File

@@ -4,6 +4,7 @@ date: 2022-03-17
format: 50-start format: 50-start
sort: 70 sort: 70
categories: ["Web Design", "Web Development"] categories: ["Web Design", "Web Development"]
class: slide
intro: This iA Writer template is inspired by the typographic style of the book Engaging Japanese Philosophy by Thomas P. Kasulis, designed by the Nanzan Institute for Religion and Culture. intro: This iA Writer template is inspired by the typographic style of the book Engaging Japanese Philosophy by Thomas P. Kasulis, designed by the Nanzan Institute for Religion and Culture.
image: image:
src: /assets/images/projects/thumbnails/ia-template-nanzan.webp src: /assets/images/projects/thumbnails/ia-template-nanzan.webp

View File

@@ -4,6 +4,7 @@ date: 2022-03-18
format: 50-end format: 50-end
sort: 80 sort: 80
categories: ["Web Design", "Web Development"] categories: ["Web Design", "Web Development"]
class: slide
intro: This iA Writer template is inspired by the Japanese aesthetics style shibui which was founded during the Muromachi period (1336-1392). I use the same style for my current personal branding on my website, for my martial arts book and for my photoblog. intro: This iA Writer template is inspired by the Japanese aesthetics style shibui which was founded during the Muromachi period (1336-1392). I use the same style for my current personal branding on my website, for my martial arts book and for my photoblog.
image: image:
src: /assets/images/projects/thumbnails/ia-template-shibui.webp src: /assets/images/projects/thumbnails/ia-template-shibui.webp

View File

@@ -4,6 +4,7 @@ date: 2006-01-01
format: 50-start format: 50-start
sort: 25 sort: 25
categories: ["Writing"] categories: ["Writing"]
class: slide
intro: I have been writing essays on this website since 2007. The topics include programming, design, self-improvement, philosophy, productivity, books, and films. The collection has been much bigger, but I deleted outdated and irrelevant essays. intro: I have been writing essays on this website since 2007. The topics include programming, design, self-improvement, philosophy, productivity, books, and films. The collection has been much bigger, but I deleted outdated and irrelevant essays.
more: more:
text: Read Journal text: Read Journal

View File

@@ -5,6 +5,7 @@ format: 50-start
sort: 100 sort: 100
showcase: true showcase: true
categories: ["Web Design", "Web Development", "Writing"] categories: ["Web Design", "Web Development", "Writing"]
class: slide
intro: My Ninjutsu Book 木隠 was first launched in 1999 and is my oldest and most visited website. The current design is the 9th iteration. In 2022 I translated it to English to make it accessible to a larger readership. intro: My Ninjutsu Book 木隠 was first launched in 1999 and is my oldest and most visited website. The current design is the 9th iteration. In 2022 I translated it to English to make it accessible to a larger readership.
description: I redesigned my Ninjutsu Book 木隠 in 2022. description: I redesigned my Ninjutsu Book 木隠 in 2022.
image: image:

View File

@@ -5,6 +5,7 @@ format: 70-start
sort: 130 sort: 130
showcase: true showcase: true
categories: ["Illustration", "Painting"] categories: ["Illustration", "Painting"]
class: slide
intro: I created this illustration for a previous version of my website in 2007 with a pencil on paper and then brought it into Adobe Photoshop, where all coloring was done. intro: I created this illustration for a previous version of my website in 2007 with a pencil on paper and then brought it into Adobe Photoshop, where all coloring was done.
description: I created this illustration for a previous version of my website in 2007 with a pencil on paper and then brought it into Adobe Photoshop, where all coloring was done. description: I created this illustration for a previous version of my website in 2007 with a pencil on paper and then brought it into Adobe Photoshop, where all coloring was done.
image: image:

View File

@@ -5,6 +5,7 @@ format: 50-start
sort: 150 sort: 150
showcase: true showcase: true
categories: ["Web Design", "Web Development", "Photography"] categories: ["Web Design", "Web Development", "Photography"]
class: slide
intro: I created this website for the Osteopathie-Institut Hamburg in 2010 as one of my last websites before I started working as a Frontend Engineer for XING. intro: I created this website for the Osteopathie-Institut Hamburg in 2010 as one of my last websites before I started working as a Frontend Engineer for XING.
description: This website for the Osteopathie-Insitut Hamburg I created in 2010. description: This website for the Osteopathie-Insitut Hamburg I created in 2010.
image: image:

View File

@@ -5,6 +5,7 @@ format: 50-end
sort: 180 sort: 180
categories: ["Illustration", "Writing"] categories: ["Illustration", "Writing"]
intro: One of my passions is Sketchnotes or also called Visual Notetaking. In Sketchnoting you use visual language to visualize ideas, notes, or thoughts. I create Sketchnotes since I first visited a workshop in 2015. intro: One of my passions is Sketchnotes or also called Visual Notetaking. In Sketchnoting you use visual language to visualize ideas, notes, or thoughts. I create Sketchnotes since I first visited a workshop in 2015.
class: slide
image: image:
src: /assets/images/projects/thumbnails/sketchnotes.webp src: /assets/images/projects/thumbnails/sketchnotes.webp
aspectRatio: 1.43 aspectRatio: 1.43

View File

@@ -5,6 +5,7 @@ format: 50-start
sort: 120 sort: 120
showcase: true showcase: true
categories: ["Web Design", "Web Development"] categories: ["Web Design", "Web Development"]
class: slide
intro: My website and blog first launched in 2006 and is the website youre looking at. The current design is the 5th iteration. intro: My website and blog first launched in 2006 and is the website youre looking at. The current design is the 5th iteration.
description: My personal website and blog relaunched in 2020/2021 with Eleventy. description: My personal website and blog relaunched in 2020/2021 with Eleventy.
image: image:

View File

@@ -5,6 +5,7 @@ format: 50-end
sort: 160 sort: 160
showcase: true showcase: true
categories: ["Graphic Design", "Web Design", "Web Development"] categories: ["Graphic Design", "Web Design", "Web Development"]
class: slide
intro: I created this small website for three Thai restaurants in Hamburg in 2010. It was online for nearly ten years and I had a lot of fun creating it. intro: I created this small website for three Thai restaurants in Hamburg in 2010. It was online for nearly ten years and I had a lot of fun creating it.
description: I created this small website for three Thai restaurants in Hamburg in 2010. description: I created this small website for three Thai restaurants in Hamburg in 2010.
image: image:

View File

@@ -2,7 +2,7 @@
title: The Traditional Colors of Japan title: The Traditional Colors of Japan
date: 2007-12-08 date: 2007-12-08
format: 50-end format: 50-end
class: traditional-colors-of-japan class: traditional-colors-of-japan slide
sort: 26 sort: 26
categories: ["Design", "Web Development"] categories: ["Design", "Web Development"]
intro: In 2007 I stumbled upon a Japanese book about the traditional colors of Japan by Nobyoshi Hamada. He listed all 250 colors with their color value in the appendix. I took some time to create an ASE file to be used with all common design software. intro: In 2007 I stumbled upon a Japanese book about the traditional colors of Japan by Nobyoshi Hamada. He listed all 250 colors with their color value in the appendix. I took some time to create an ASE file to be used with all common design software.

View File

@@ -5,6 +5,7 @@ format: 70-end
sort: 20 sort: 20
showcase: true showcase: true
categories: ["Illustration", "Icon Design"] categories: ["Illustration", "Icon Design"]
class: slide
intro: I was asked to create three new illustrations that could be used for an Onboarding screen on XING. I accepted the challenge to take over this task and finished the whole process from concept to scribbles, to final illustrations in a day. intro: I was asked to create three new illustrations that could be used for an Onboarding screen on XING. I accepted the challenge to take over this task and finished the whole process from concept to scribbles, to final illustrations in a day.
description: I was asked to create three new illustrations that could be used for an Onboarding screen on XING. description: I was asked to create three new illustrations that could be used for an Onboarding screen on XING.
image: image:

View File

@@ -62,6 +62,7 @@ const description = 'This is a collection of AI art pieces Ive created with S
'md:col-span-6 md:row-span-6': 'md:col-span-6 md:row-span-6':
data.images[0].aspectRatio === 1 && data.coverSize === 'large', data.images[0].aspectRatio === 1 && data.coverSize === 'large',
}, },
'slide',
]} ]}
> >
<Link title={data.title} href={`/ai-art/${slug}/`}> <Link title={data.title} href={`/ai-art/${slug}/`}>

View File

@@ -66,7 +66,7 @@ rssPosts.sort(sortMarkdownByDate);
</article> </article>
<article <article
class="col-start-2 col-end-18 row-start-4 md:col-start-3 md:col-end-17 md:row-start-3 xl:col-start-5 xl:col-end-15" class="slide col-start-2 col-end-18 row-start-4 md:col-start-3 md:col-end-17 md:row-start-3 xl:col-start-5 xl:col-end-15"
> >
<Headline>What I Do</Headline> <Headline>What I Do</Headline>
<div class="columns-1 gap-[2.775vw] mbe-10 md:columns-2 [&_p:last-of-type]:mbe-0"> <div class="columns-1 gap-[2.775vw] mbe-10 md:columns-2 [&_p:last-of-type]:mbe-0">
@@ -76,7 +76,7 @@ rssPosts.sort(sortMarkdownByDate);
</article> </article>
<article <article
class="col-start-2 col-end-18 md:col-start-6 md:col-end-14 xl:col-start-7 xl:col-end-13" class="slide col-start-2 col-end-18 md:col-start-6 md:col-end-14 xl:col-start-7 xl:col-end-13"
> >
<Headline>Journal</Headline> <Headline>Journal</Headline>
<Journal components={mapping} /> <Journal components={mapping} />
@@ -84,7 +84,7 @@ rssPosts.sort(sortMarkdownByDate);
</article> </article>
<article <article
class="min-[1794px]:[&_li:block col-start-2 col-end-18 grid w-full grid-cols-18 gap-y-gap mbe-12 min-[1097px]:[&_li:nth-child(n+5)]:hidden min-[1410px]:[&_li:nth-child(n+5)]:block min-[1411px]:[&_li:nth-child(n+6)]:hidden min-[1793px]:[&_li:nth-child(n+6)]:block" class="slide min-[1794px]:[&_li:block col-start-2 col-end-18 grid w-full grid-cols-18 gap-y-gap mbe-12 min-[1097px]:[&_li:nth-child(n+5)]:hidden min-[1410px]:[&_li:nth-child(n+5)]:block min-[1411px]:[&_li:nth-child(n+6)]:hidden min-[1793px]:[&_li:nth-child(n+6)]:block"
data-pagefind-ignore data-pagefind-ignore
aria-label="Latest essays" aria-label="Latest essays"
> >

View File

@@ -55,6 +55,7 @@ const description = 'This is a collection of Sketchnotes Ive drawn.';
'md:col-span-5 md:row-span-6': 'md:col-span-5 md:row-span-6':
data.images[0].aspectRatio < 1 && data.coverSize === 'large', data.images[0].aspectRatio < 1 && data.coverSize === 'large',
}, },
'slide',
]} ]}
> >
<Link title={data.title} href={`/sketchnotes/${slug}/`}> <Link title={data.title} href={`/sketchnotes/${slug}/`}>

View File

@@ -39,7 +39,7 @@ const description =
<ColorStack> <ColorStack>
{ {
colors.map(({ name, description, color }) => ( colors.map(({ name, description, color }) => (
<div> <div class="slide">
<ColorSwatch color={color} title={name} description={description} /> <ColorSwatch color={color} title={name} description={description} />
</div> </div>
)) ))

View File

@@ -268,4 +268,22 @@
figure > .figure-content > lite-youtube { figure > .figure-content > lite-youtube {
@apply mbe-0; @apply mbe-0;
} }
@keyframes slide-fade-in {
from {
opacity: 0;
box-shadow: none;
transform: scale(0.8) translateY(15vh);
}
}
.slide {
@media (prefers-reduced-motion: no-preference) {
@supports (animation-timeline: view()) {
animation: slide-fade-in both;
animation-timeline: view();
animation-range: contain -40% contain 50%;
}
}
}
} }