Changes in src/assets/css/style.css [520c993:77019fa] in Klonkt
- File:
-
- 1 edited
-
src/assets/css/style.css (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/assets/css/style.css
r520c993 r77019fa 2544 2544 scroll-margin-top: 2rem; 2545 2545 } 2546 /* Het laatste bericht krijgt geen snappunt: zijn bovenkant is niet te bereiken 2547 (er zit te weinig pagina onder), en de browser snapt dan naar de dichtstbij- 2548 zijnde bereikbare positie -- de bodem. Gemeten: snappunt 2548, maxScroll 2356. */ 2549 .feed-reader .read-post:last-child .read-anker { scroll-snap-align: none; } 2546 /* HET LAATSTE BERICHT SNAPT OOK (Robin, 21-8). Dat kon eerst niet: zijn 2547 bovenkant was onbereikbaar -- er zat te weinig pagina onder om hem naar de 2548 bovenrand te brengen (gemeten: snappunt 2548, maxScroll 2356), en de browser 2549 viel dan terug op de dichtstbijzijnde bereikbare positie: de bodem. Het 2550 snappunt weghalen was de vorige oplossing; dit is de echte. 2551 Een volle schermhoogte op het LAATSTE bericht maakt die bovenkant precies 2552 bereikbaar. Korter dan het scherm: het bericht wordt even hoog en het snappunt 2553 valt exact op maxScroll. Langer dan het scherm: dan was het al haalbaar en 2554 doet min-height niets. 2555 100lvh en niet 100svh: op een telefoon met een verdwijnende adresbalk is het 2556 zichtbare scherm soms de GROTE viewport, en dan komt svh net tekort. 2557 Zichtbaar kost dit niets: berichten hebben geen kader, alleen een scheidings- 2558 lijn erboven, dus het laatste bericht krijgt hooguit witruimte eronder. */ 2559 .feed-reader .read-post:last-child { min-height: 100lvh; } 2550 2560 2551 2561 /* ELK BERICHT EEN EIGEN SCHERM, als de site dat wil (Instellingen -> Weergave). … … 2556 2566 -- want welke van de twee prettiger leest hangt af van wat je schrijft. */ 2557 2567 body[data-reader-pages="1"] .feed-reader .read-post { min-height: 100svh; } 2568 /* OP MOBIEL ALTIJD, wat de instelling ook zegt (Robin, 20-8). Op een telefoon is 2569 een bericht per scherm de vorm die werkt -- je veegt van bericht naar bericht. 2570 Op desktop blijft het een keuze, want daar lees je in een kolom naast veel 2571 witruimte en is een doorlopende stroom vaak prettiger. */ 2572 @media (hover: none) and (pointer: coarse) { 2573 /* Op mobiel draait Lezen in paginamodus (body.is-paged), en die zet hieronder 2574 een vaste hoogte. Deze regel is de terugval voor het moment vóór de module 2575 geladen is, zodat de berichten niet eerst als losse stroom in beeld 2576 springen. */ 2577 .feed-reader .read-post { min-height: 100svh; } 2578 /* Geen native snap op mobiel: dat doet lenis/snap, met een instelbare vangzone 2579 en duur. Twee snapsystemen op dezelfde scroller vechten. */ 2580 html:has(body.on-home[data-feed-view="reader"]) { scroll-snap-type: none; } 2581 } 2582 2583 /* -------- PAGINAMODUS -------- 2584 Elk bericht is een paneel van precies een scherm dat ZELF scrollt; tussen 2585 berichten ga je met knoppen. Daarmee doet het scrollgevoel er niet meer toe: 2586 geen momentum om na te bouwen en geen snap die vangt. 2587 De stroom zelf vangt geen vingers meer -- dat regelt lenis.stop() in 2588 mod/read.js -- en data-lenis-prevent op het paneel houdt de scroll BINNEN een 2589 bericht ongemoeid (die controle staat in Lenis vóór de gestopt-controle). 2590 Geldt waar een bericht een eigen scherm heeft: op mobiel altijd, op desktop 2591 als de site dat zo instelt. */ 2592 body.is-paged .feed-reader .read-post { 2593 height: 100svh; 2594 min-height: 0; 2595 overflow-y: auto; 2596 overscroll-behavior: contain; /* raakt het einde, dan niet doorschuiven */ 2597 scroll-snap-align: none; 2598 /* Ruimte voor de twee balken, zodat er nooit tekst onder een knop verdwijnt. 2599 Het verloop laat een regel wel zacht wegvagen, maar wat je moet KUNNEN 2600 lezen hoort er niet achter te komen -- vandaar padding en niet alleen die 2601 fade. --read-balk staat hieronder bij .read-nav, zodat de twee niet uit 2602 elkaar kunnen lopen. */ 2603 padding-top: calc(var(--read-balk) + .5rem); 2604 padding-bottom: calc(var(--read-balk) + .5rem); 2605 /* BOVENAAN beginnen, niet gecentreerd. Ik had de inhoud een ronde lang 2606 verticaal gecentreerd om het gat onder een kort bericht te verdelen, maar 2607 dan hangt zo'n bericht halverwege het scherm en begint niet elk paneel op 2608 dezelfde plek -- dat leest onrustig. Robin ving het (20-8). Elk bericht 2609 begint nu bovenaan, en de ruimte die overblijft valt onderaan. */ 2610 } 2611 body.is-paged .feed-reader .read-anker { scroll-snap-align: none; } 2612 2613 /* DE DYNAMIC ISLAND, en met opzet alleen op iOS (Robin, 20-8: "op android is het 2614 een ander verhaal"). 2615 In paginamodus vult een bericht precies het scherm, dus de eerste regel komt 2616 bovenaan -- en op een iPhone ligt daar de island of de notch overheen. 2617 env(safe-area-inset-top) geeft daar de vrije ruimte; viewport-fit=cover staat 2618 al in de viewport-meta, dus die waarde is echt. 2619 De @supports-regel is de iOS-Safari-toets: -webkit-touch-callout bestaat alleen 2620 daar. Op Android is env() vaak 0 of betekent het iets anders (camera-uitsparing, 2621 statusbalk die al meegerekend is), en dan zou dit een gat bovenin maken dat er 2622 niet hoort. Vandaar afgeschermd in plaats van env() overal toepassen. 2623 De hoogte krimpt mee, anders duwt de padding het paneel groter dan het scherm 2624 en krijg je alsnog scroll tussen de berichten. */ 2625 @supports (-webkit-touch-callout: none) { 2626 body.is-paged .feed-reader .read-post { 2627 padding-top: calc(var(--read-balk) + .5rem + env(safe-area-inset-top, 0px)); 2628 height: calc(100svh - env(safe-area-inset-top, 0px)); 2629 } 2630 /* De bovenbalk houdt zijn knop al vrij van de island via padding-top 2631 hierboven; hier hoeft niets extra's meer. */ 2632 } 2633 2634 /* De knop onderaan een bericht: naar het volgende. */ 2635 2636 2637 /* Omhoog en omlaag: twee balken, boven en onder, die BLIJVEN staan terwijl je in 2638 een bericht scrolt (Robin, 20-8). Het verloop van paginakleur naar doorzichtig 2639 laat de tekst eronderdoor wegvagen -- zonder dat zou een regel halverwege hard 2640 achter de knop verdwijnen en oogt het als een afgeknipte pagina. 2641 De BALK vangt geen aanrakingen (pointer-events: none), alleen de knop zelf -- 2642 anders zou een strook van 5rem boven- en onderaan je scroll opeten. */ 2643 /* TWEE BALKEN over de volle breedte, boven en onder. Eerder waren dit losse 2644 cirkels (te rommelig naast de tabbalk en de speler) en daarna onzichtbare 2645 tikzones -- maar die werkten niet, omdat de onderste strook onder de 2646 mini-speler en de tabbalk ligt en die de tik opvangen. Een balk met een eigen 2647 z-index kan daar wel overheen. 2648 Slank gehouden: ze eten hooguit 2.6rem aan elke kant, en het paneel houdt daar 2649 al ruimte voor vrij. */ 2650 :root { --read-balk: 2.6rem; } 2651 .read-bar { 2652 position: fixed; left: 0; right: 0; z-index: 1060; /* boven tabbalk (1050) */ 2653 display: flex; align-items: center; 2654 /* Pijlen LINKS in de balk, niet gecentreerd (Robin, 20-8). */ 2655 justify-content: flex-start; 2656 padding-left: max(1.1rem, env(safe-area-inset-left, 0px)); 2657 box-sizing: border-box; 2658 height: var(--read-balk); 2659 border: 0; 2660 border-top: 1px solid transparent; 2661 background: color-mix(in srgb, var(--paper) 90%, var(--ink)); 2662 backdrop-filter: blur(14px) saturate(140%); 2663 -webkit-backdrop-filter: blur(14px) saturate(140%); 2664 color: var(--ink); 2665 cursor: pointer; 2666 transition: opacity .15s ease; 2667 } 2668 .read-bar--top { 2669 top: 0; 2670 height: calc(var(--read-balk) + env(safe-area-inset-top, 0px)); 2671 padding-top: env(safe-area-inset-top, 0px); 2672 border-bottom: 1px solid color-mix(in srgb, var(--ink) 14%, transparent); 2673 } 2674 .read-bar--bottom { 2675 /* De waarde komt uit mod/read.js: die meet hoe hoog de tabbalk en de 2676 mini-speler werkelijk staan. Geraden rem-waarden lieten hem zweven -- een 2677 kier boven de speler, of er half achter. Dit is de terugval voor de eerste 2678 frame en voor als de module niet laadt. */ 2679 bottom: 0; 2680 border-top: 1px solid color-mix(in srgb, var(--ink) 14%, transparent); 2681 } 2682 .read-bar:active { background: color-mix(in srgb, var(--paper) 78%, var(--ink)); } 2683 .read-bar[hidden], body:not(.is-paged) .read-bar { display: none; } 2558 2684 2559 2685 /* Een lijn tussen twee berichten: zonder grens is een stroom een lange brij. */
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)