Changeset 22d2dba5 in Klonkt for src/assets/css/style.css


Ignore:
Timestamp:
08/20/2026 07:25:24 AM (3 weeks ago)
Author:
Claude (agent) <aiclaude@…>
Branches:
main
Children:
77019fa
Parents:
c581e5e
git-author:
Robin <roboburr@…> (08/20/2026 03:33:49 AM)
git-committer:
Claude (agent) <aiclaude@…> (08/20/2026 07:25:24 AM)
Message:

wip paginamodus

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/assets/css/style.css

    rc581e5e r22d2dba5  
    25612561   witruimte en is een doorlopende stroom vaak prettiger. */
    25622562@media (hover: none) and (pointer: coarse) {
     2563    /* Op mobiel draait Lezen in paginamodus (body.is-paged), en die zet hieronder
     2564       een vaste hoogte. Deze regel is de terugval voor het moment vóór de module
     2565       geladen is, zodat de berichten niet eerst als losse stroom in beeld
     2566       springen. */
    25632567    .feed-reader .read-post { min-height: 100svh; }
    2564 }
     2568/* Geen native snap op mobiel: dat doet lenis/snap, met een instelbare vangzone
     2569       en duur. Twee snapsystemen op dezelfde scroller vechten. */
     2570    html:has(body.on-home[data-feed-view="reader"]) { scroll-snap-type: none; }
     2571}
     2572
     2573/* -------- PAGINAMODUS --------
     2574   Elk bericht is een paneel van precies een scherm dat ZELF scrollt; tussen
     2575   berichten ga je met knoppen. Daarmee doet het scrollgevoel er niet meer toe:
     2576   geen momentum om na te bouwen en geen snap die vangt.
     2577   De stroom zelf vangt geen vingers meer -- dat regelt lenis.stop() in
     2578   mod/read.js -- en data-lenis-prevent op het paneel houdt de scroll BINNEN een
     2579   bericht ongemoeid (die controle staat in Lenis vóór de gestopt-controle).
     2580   Geldt waar een bericht een eigen scherm heeft: op mobiel altijd, op desktop
     2581   als de site dat zo instelt. */
     2582body.is-paged .feed-reader .read-post {
     2583    height: 100svh;
     2584    min-height: 0;
     2585    overflow-y: auto;
     2586    overscroll-behavior: contain;   /* raakt het einde, dan niet doorschuiven */
     2587    scroll-snap-align: none;
     2588    /* Ruimte voor de twee balken, zodat er nooit tekst onder een knop verdwijnt.
     2589       Het verloop laat een regel wel zacht wegvagen, maar wat je moet KUNNEN
     2590       lezen hoort er niet achter te komen -- vandaar padding en niet alleen die
     2591       fade. --read-balk staat hieronder bij .read-nav, zodat de twee niet uit
     2592       elkaar kunnen lopen. */
     2593    padding-top: calc(var(--read-balk) + .5rem);
     2594    padding-bottom: calc(var(--read-balk) + .5rem);
     2595    /* BOVENAAN beginnen, niet gecentreerd. Ik had de inhoud een ronde lang
     2596       verticaal gecentreerd om het gat onder een kort bericht te verdelen, maar
     2597       dan hangt zo'n bericht halverwege het scherm en begint niet elk paneel op
     2598       dezelfde plek -- dat leest onrustig. Robin ving het (20-8). Elk bericht
     2599       begint nu bovenaan, en de ruimte die overblijft valt onderaan. */
     2600}
     2601body.is-paged .feed-reader .read-anker { scroll-snap-align: none; }
     2602
     2603/* DE DYNAMIC ISLAND, en met opzet alleen op iOS (Robin, 20-8: "op android is het
     2604   een ander verhaal").
     2605   In paginamodus vult een bericht precies het scherm, dus de eerste regel komt
     2606   bovenaan -- en op een iPhone ligt daar de island of de notch overheen.
     2607   env(safe-area-inset-top) geeft daar de vrije ruimte; viewport-fit=cover staat
     2608   al in de viewport-meta, dus die waarde is echt.
     2609   De @supports-regel is de iOS-Safari-toets: -webkit-touch-callout bestaat alleen
     2610   daar. Op Android is env() vaak 0 of betekent het iets anders (camera-uitsparing,
     2611   statusbalk die al meegerekend is), en dan zou dit een gat bovenin maken dat er
     2612   niet hoort. Vandaar afgeschermd in plaats van env() overal toepassen.
     2613   De hoogte krimpt mee, anders duwt de padding het paneel groter dan het scherm
     2614   en krijg je alsnog scroll tussen de berichten. */
     2615@supports (-webkit-touch-callout: none) {
     2616    body.is-paged .feed-reader .read-post {
     2617        padding-top: calc(var(--read-balk) + .5rem + env(safe-area-inset-top, 0px));
     2618        height: calc(100svh - env(safe-area-inset-top, 0px));
     2619    }
     2620    /* De bovenbalk houdt zijn knop al vrij van de island via padding-top
     2621       hierboven; hier hoeft niets extra's meer. */
     2622}
     2623
     2624/* De knop onderaan een bericht: naar het volgende. */
     2625
     2626
     2627/* Omhoog en omlaag: twee balken, boven en onder, die BLIJVEN staan terwijl je in
     2628   een bericht scrolt (Robin, 20-8). Het verloop van paginakleur naar doorzichtig
     2629   laat de tekst eronderdoor wegvagen -- zonder dat zou een regel halverwege hard
     2630   achter de knop verdwijnen en oogt het als een afgeknipte pagina.
     2631   De BALK vangt geen aanrakingen (pointer-events: none), alleen de knop zelf --
     2632   anders zou een strook van 5rem boven- en onderaan je scroll opeten. */
     2633/* TWEE BALKEN over de volle breedte, boven en onder. Eerder waren dit losse
     2634   cirkels (te rommelig naast de tabbalk en de speler) en daarna onzichtbare
     2635   tikzones -- maar die werkten niet, omdat de onderste strook onder de
     2636   mini-speler en de tabbalk ligt en die de tik opvangen. Een balk met een eigen
     2637   z-index kan daar wel overheen.
     2638   Slank gehouden: ze eten hooguit 2.6rem aan elke kant, en het paneel houdt daar
     2639   al ruimte voor vrij. */
     2640:root { --read-balk: 2.6rem; }
     2641.read-bar {
     2642    position: fixed; left: 0; right: 0; z-index: 1060;   /* boven tabbalk (1050) */
     2643    display: flex; align-items: center;
     2644    /* Pijlen LINKS in de balk, niet gecentreerd (Robin, 20-8). */
     2645    justify-content: flex-start;
     2646    padding-left: max(1.1rem, env(safe-area-inset-left, 0px));
     2647    box-sizing: border-box;
     2648    height: var(--read-balk);
     2649    border: 0;
     2650    border-top: 1px solid transparent;
     2651    background: color-mix(in srgb, var(--paper) 90%, var(--ink));
     2652    backdrop-filter: blur(14px) saturate(140%);
     2653    -webkit-backdrop-filter: blur(14px) saturate(140%);
     2654    color: var(--ink);
     2655    cursor: pointer;
     2656    transition: opacity .15s ease;
     2657}
     2658.read-bar--top {
     2659    top: 0;
     2660    height: calc(var(--read-balk) + env(safe-area-inset-top, 0px));
     2661    padding-top: env(safe-area-inset-top, 0px);
     2662    border-bottom: 1px solid color-mix(in srgb, var(--ink) 14%, transparent);
     2663}
     2664.read-bar--bottom {
     2665    /* De waarde komt uit mod/read.js: die meet hoe hoog de tabbalk en de
     2666       mini-speler werkelijk staan. Geraden rem-waarden lieten hem zweven -- een
     2667       kier boven de speler, of er half achter. Dit is de terugval voor de eerste
     2668       frame en voor als de module niet laadt. */
     2669    bottom: 0;
     2670    border-top: 1px solid color-mix(in srgb, var(--ink) 14%, transparent);
     2671}
     2672.read-bar:active { background: color-mix(in srgb, var(--paper) 78%, var(--ink)); }
     2673.read-bar[hidden], body:not(.is-paged) .read-bar { display: none; }
    25652674
    25662675/* Een lijn tussen twee berichten: zonder grens is een stroom een lange brij. */
Note: See TracChangeset for help on using the changeset viewer.