Preserve the tape shadow over scrolling content
showcase/deploy Live at https://showcase.andrefiedler.de/2608_BuB/

This commit is contained in:
André Fiedler
2026-09-07 18:40:44 +02:00
parent 7d09a69268
commit 164476a5b3
5 changed files with 18 additions and 5 deletions
+12
View File
@@ -0,0 +1,12 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 270">
<defs>
<!-- Original IDML shadow: 35% opacity, 2.7895 pt offsets, 3.945 pt blur size. -->
<filter id="shadow" filterUnits="userSpaceOnUse" x="-20" y="-20" width="1240" height="310" color-interpolation-filters="sRGB">
<feDropShadow dx="2.789536" dy="2.789536" stdDeviation="1.9725" flood-color="white" flood-opacity="0.35"/>
</filter>
</defs>
<g fill="white" filter="url(#shadow)">
<path transform="matrix(1,0,0,-1,0,134.74762)" d="M0 0V-23.7L1200 36.564V60.264Z"/>
<path transform="matrix(1,0,0,-1,452.3481,0)" d="M0 0 747.652-253.794V-228.797L73.637 0Z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 667 B

+3 -3
View File
@@ -289,12 +289,12 @@ address {
position: fixed; position: fixed;
z-index: 1; z-index: 1;
inset: 0 0 auto; inset: 0 0 auto;
block-size: calc(254 * var(--unit)); block-size: calc(270 * var(--unit));
background-image: var(--desktop-backdrop); background-image: var(--desktop-backdrop);
background-size: 100% auto; background-size: 100% auto;
background-repeat: no-repeat; background-repeat: no-repeat;
/* Reuse the original pixels, revealing only the opaque tape above content. */ /* Include the soft shadow above content without darkening the backdrop twice. */
mask-image: url("./construction-tape.svg"); mask-image: url("./construction-tape-mask.svg");
mask-mode: alpha; mask-mode: alpha;
mask-size: 100% auto; mask-size: 100% auto;
mask-repeat: no-repeat; mask-repeat: no-repeat;
+1 -1
View File
@@ -1,6 +1,6 @@
# Implementation and maintenance # Implementation and maintenance
The supplied 1200 × 900 PDF and its IDML source define the desktop composition. All original design files are preserved under `design/`. The photographic backdrop and construction tape are extracted together to preserve the print export's crop, tint and shadows. This background stays fixed to the viewport above 1024 px. A foreground layer masks the same original pixels to the tape outline so content scrolls behind the band; it does not intercept pointer events. On smaller screens the background and tape scroll with the page. The logo and Lumios Marker heading retain their original outlines as SVG artwork; all other content is semantic, selectable HTML in `index.html`. The supplied 1200 × 900 PDF and its IDML source define the desktop composition. All original design files are preserved under `design/`. The photographic backdrop and construction tape are extracted together to preserve the print export's crop, tint and shadows. This background stays fixed to the viewport above 1024 px. A foreground layer masks the same original pixels to the tape outline and its soft shadow so content scrolls behind both; it does not intercept pointer events. `construction-tape-mask.svg` uses the original tape paths and the IDML shadow's 35% opacity, 2.7895 pt offsets and 3.945 pt blur size. Reusing the background pixels preserves uncovered artwork without applying its shadow twice. On smaller screens the background and tape scroll with the page. The logo and Lumios Marker heading retain their original outlines as SVG artwork; all other content is semantic, selectable HTML in `index.html`.
CSS lives in `assets/styles.css`; all colors are CSS custom properties. Its link in `index.html` carries a content-hash query parameter; update that value when the CSS changes to avoid stale browser caches. Layout scales with the design above 1024 px. At smaller sizes the type becomes larger and wraps; at 600 px the bank and PayPal details stack in their original reading order. The mobile background separates the supplied tape from the photograph so that it remains above the logo while the photo fills a tall page. `assets/app.mjs` only enhances the IBAN with clipboard support and an accessible selection fallback. Contact and payment links work without JavaScript. CSS lives in `assets/styles.css`; all colors are CSS custom properties. Its link in `index.html` carries a content-hash query parameter; update that value when the CSS changes to avoid stale browser caches. Layout scales with the design above 1024 px. At smaller sizes the type becomes larger and wraps; at 600 px the bank and PayPal details stack in their original reading order. The mobile background separates the supplied tape from the photograph so that it remains above the logo while the photo fills a tall page. `assets/app.mjs` only enhances the IBAN with clipboard support and an accessible selection fallback. Contact and payment links work without JavaScript.
+1
View File
@@ -31,3 +31,4 @@ Desktop band follow-up on 2026-09-07:
- Real scrolling at 1200, 1025, 1024 and 390 px confirms the appropriate positioning and no horizontal overflow. Screenshot comparisons of the decorative area remain identical after scrolling on desktop and change on mobile. - Real scrolling at 1200, 1025, 1024 and 390 px confirms the appropriate positioning and no horizontal overflow. Screenshot comparisons of the decorative area remain identical after scrolling on desktop and change on mobile.
- Inspected the initial and scrolled desktop screenshots against the previously deployed composition; layout and artwork placement are retained. - Inspected the initial and scrolled desktop screenshots against the previously deployed composition; layout and artwork placement are retained.
- A foreground mask keeps the opaque desktop tape above scrolling content. At 1200 px, a tape region previously covered by text stays pixel-identical before and after scrolling; the foreground does not intercept pointer events. Checks at 1025, 1024 and 390 px confirm the breakpoint and mobile scrolling behavior, with no horizontal overflow. - A foreground mask keeps the opaque desktop tape above scrolling content. At 1200 px, a tape region previously covered by text stays pixel-identical before and after scrolling; the foreground does not intercept pointer events. Checks at 1025, 1024 and 390 px confirm the breakpoint and mobile scrolling behavior, with no horizontal overflow.
- The mask also includes the soft shadow. At 1200 px with 90 px of scrolling, 260 previously white logo pixels receive visible shading; differences are confined to the logo passing under the shadow. The initial desktop screenshot remains pixel-identical, confirming the background shadow is not doubled.
+1 -1
View File
@@ -35,7 +35,7 @@
<link rel="manifest" href="./site.webmanifest"> <link rel="manifest" href="./site.webmanifest">
<link rel="preload" href="./assets/fonts/roboto-italic-latin.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="./assets/fonts/roboto-italic-latin.woff2" as="font" type="font/woff2" crossorigin>
<link rel="preload" href="./assets/fonts/roboto-latin.woff2" as="font" type="font/woff2" crossorigin> <link rel="preload" href="./assets/fonts/roboto-latin.woff2" as="font" type="font/woff2" crossorigin>
<link rel="stylesheet" href="./assets/styles.css?v=e19623f24017"> <link rel="stylesheet" href="./assets/styles.css?v=3ca779d74105">
<script type="module" src="./assets/app.mjs"></script> <script type="module" src="./assets/app.mjs"></script>
<script type="application/ld+json"> <script type="application/ld+json">
{ {