- Timestamp:
- 08/20/2026 11:12:07 AM (3 weeks ago)
- Branches:
- main
- Children:
- 3ccca13
- Parents:
- 96a99bf
- Location:
- src
- Files:
-
- 3 edited
-
assets/css/style.css (modified) (2 diffs)
-
assets/js/mod/read.js (modified) (1 diff)
-
views/shell.ejs (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/assets/css/style.css
r96a99bf rd9f60f4 2510 2510 margin: 0 auto; 2511 2511 /* De onderrand loopt achter de vaste tabbalk door; deze padding houdt de 2512 TEKST erboven. */ 2513 padding: 2rem 1.2rem 4rem; 2512 TEKST erboven. De BOVENmarge is verdubbeld (Robin, 21-8: 2rem -> 4rem): 2513 na een snap staat de scheidingslijn op de bovenrand, en de tekst 2514 daaronder krijgt meer lucht. MOET GELIJK BLIJVEN aan scroll-margin-top 2515 op .read-anker hieronder -- lopen die uit elkaar, dan landt de lijn niet 2516 meer precies op de bovenrand. */ 2517 padding: 4rem 1.2rem 4rem; 2514 2518 box-sizing: border-box; 2515 2519 } … … 2536 2540 height: 0; 2537 2541 scroll-snap-align: start; 2538 /* Het anker staat BINNEN de padding van het artikel, dus 2rem onder de2539 streep. Zonder deze correctie landt de snap 32px te laag en staat de2540 scheidingslijn netboven beeld -- gemeten: 733 waar 700 hoort.2542 /* Het anker staat BINNEN de padding van het artikel, dus een padding-top 2543 onder de streep. Zonder deze correctie landt de snap net zoveel te laag 2544 en staat de scheidingslijn boven beeld -- gemeten: 733 waar 700 hoort. 2541 2545 scroll-margin verschuift alleen het SNAPPUNT en niet de opmaak, dus het 2542 2546 anker blijft waar het staat en de uitlijning klopt met de lijn. 2543 Blijft in de pas met de padding-top van .read-post hierboven. */ 2544 scroll-margin-top: 2rem; 2547 GELIJK aan de padding-top van .read-post hierboven; die ging 21-8 van 2548 2rem naar 4rem, dus deze ook. */ 2549 scroll-margin-top: 4rem; 2545 2550 } 2546 2551 /* HET LAATSTE BERICHT SNAPT OOK (Robin, 21-8). Dat kon eerst niet: zijn -
src/assets/js/mod/read.js
r96a99bf rd9f60f4 413 413 // kandidaat beoordeelt: zonder deze omleiding houdt de zone vooruit op bij de 414 414 // helft van de afstand tussen twee berichten, hoe groot je de drempel ook zet. 415 // 416 // DE REGEL, in Robins woorden (21-8): "enkel bij downscrollen, aan de 417 // onderkant van elke post, snappen naar de lijn tussen de posts" -- en geen 418 // snap op een bericht dat al voorbij is gescrold. Drie voorwaarden dus: 419 // 1. de laatste echte beweging ging omlaag, 420 // 2. het doel ligt VOOR je (een punt achter je slaan we over), 421 // 3. het ligt binnen de vangzone -- die begint rond de voet van het bericht. 422 // Het doel zelf blijft de bovenkant van het volgende bericht: dat IS de lijn 423 // ertussen, en dat is het essentiële. 424 // 425 // DE ZONE IS EEN GETAL, geen '55%'. Die string kwam ongewijzigd uit de opties 426 // en werd hier met een getal vergeleken -- altijd onwaar, dus deze terugval 427 // heeft nooit gewerkt en alleen het doel dat lenis zelf koos kwam erdoor. 428 const vangZone = () => 0.55 * window.innerHeight; 429 // Lenis' eigen `direction` is het teken van de snelheid, en die is bij het 430 // afvuren van de (gedebouncede) snap alweer nul. Daarom onthouden we de 431 // laatste richting die er echt was. 432 let laatsteRichtingOmlaag = true; 433 lenis.on('scroll', () => { 434 if (Math.abs(lenis.velocity) > 0.05) laatsteRichtingOmlaag = lenis.velocity > 0; 435 }); 415 436 const echtGaNaar = snap.goTo.bind(snap); 416 437 snap.goTo = (index) => { 438 if (!laatsteRichtingOmlaag) return; // omhoog: nooit vangen 417 439 const punten = snap.computeSnaps(); // zelfde volgorde als goTo intern gebruikt 418 440 const nu = lenis.scroll; 419 const doel = punten[index];420 if (doel && doel.value > nu + 2) { echtGaNaar(index); return; }421 441 let vooruit = -1; 422 442 punten.forEach((punt, i) => { 423 443 if (punt.value > nu + 2 && (vooruit < 0 || punt.value < punten[vooruit].value)) vooruit = i; 424 444 }); 425 if (vooruit < 0) return; 426 if (punten[vooruit].value - nu <= snap.distanceThreshold) echtGaNaar(vooruit);445 if (vooruit < 0) return; // niets meer voor je: vrij uitscrollen 446 if (punten[vooruit].value - nu <= vangZone()) echtGaNaar(vooruit); 427 447 }; 428 448 // Native snappen uit: twee mechanismen op dezelfde scroller vechten. -
src/views/shell.ejs
r96a99bf rd9f60f4 222 222 223 223 <!-- v9 stylesheet (full palette system) --> 224 <link rel="stylesheet" href="/assets/css/style.css?v=10 4">224 <link rel="stylesheet" href="/assets/css/style.css?v=105"> 225 225 <script> 226 226 /* iOS safe-area, built by hand. env(safe-area-inset-top) resolves to 0 on this iOS in … … 505 505 // Eén nummer voor de hele map. Te vaak bumpen kost één download; te weinig 506 506 // bumpen kost een bugfix die nooit aankomt. 507 var MOD_V = 4 7;507 var MOD_V = 48; 508 508 509 509 // name -> 1 (aan het laden) of de module-namespace (geladen). Een module
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)