Changeset e46ebaa in Klonkt for src/assets/css/style.css
- Timestamp:
- 08/20/2026 12:54:30 AM (3 weeks ago)
- Branches:
- main
- Children:
- 48481cd
- Parents:
- 598f090
- File:
-
- 1 edited
-
src/assets/css/style.css (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/assets/css/style.css
r598f090 re46ebaa 2430 2430 } 2431 2431 2432 /* -------- AUTO (data-feed-view="auto") -------- 2433 Lezen op mobiel, Tijdlijn op desktop. GEEN JavaScript: de CSS kiest, dus geen 2434 resize-afhandeling en geen flikkering waarin je eerst de verkeerde weergave 2435 ziet. De tijdlijn is de terugval, dus boven de grens hoeft hier niets te 2436 staan -- die is vanzelf al zichtbaar. 2437 De :has(.feed-reader)-voorwaarde staat er om dezelfde reden als hierboven: 2438 zonder berichten is er geen leessectie, en dan moet de tijdlijn blijven staan 2439 met "nog niets geschreven" erin. */ 2440 @media (max-width: 767px) { 2441 body.on-home[data-feed-view="auto"] .feed-reader { display: block; } 2442 body.on-home[data-feed-view="auto"]:has(.feed-reader) .feed-timeline, 2443 body.on-home[data-feed-view="auto"]:has(.feed-reader) .feed-grid, 2444 body.on-home[data-feed-view="auto"]:has(.feed-reader) .pagination, 2445 body.on-home[data-feed-view="auto"]:has(.feed-reader) .related-posts, 2446 body.on-home[data-feed-view="auto"]:has(.feed-reader) .article-footer { 2447 display: none !important; 2448 } 2449 } 2450 /* In de auto-stand staan BEIDE knoppen in de HTML en laat de mediaquery er een 2451 zien. Zo verspringt de naam van de knop niet terwijl je ernaar kijkt, en is er 2452 geen JavaScript nodig dat op resize moet luisteren. */ 2453 .view-switch-btn.vs-alleen-mobiel { display: none; } 2454 @media (max-width: 767px) { 2455 .view-switch-btn.vs-alleen-mobiel { display: inline-flex; } 2456 .view-switch-btn.vs-alleen-desktop { display: none; } 2457 } 2458 2432 2459 /* Snappen doet de SCROLLCONTAINER, en dat is het document -- niet .read-stream, 2433 2460 die heeft overflow: visible en scrollt zelf niet. Proximity en geen mandatory: 2434 2461 in een bericht dat langer is dan het scherm moet je rustig door kunnen lezen. */ 2435 html:has(body.on-home[data-feed-view="reader"]) { scroll-snap-type: y proximity; } 2462 html:has(body.on-home[data-feed-view="reader"]) { 2463 scroll-snap-type: y proximity; 2464 /* Vloeiend, niet in een klap. Zonder dit springt een snap er in EEN frame 2465 naartoe en voelt het als een hik in plaats van als meegeven -- Barts 2466 melding (20-8). Geldt ook voor de terug-naar-boven-knop en voor een 2467 ankersprong, en dat is precies wat je wilt. 2468 Uitgezet bij prefers-reduced-motion, onderaan dit blok. */ 2469 scroll-behavior: smooth; 2470 } 2436 2471 /* En de browser niet óók laten compenseren als Load more er berichten bij zet: 2437 2472 Chrome en Firefox schuiven bij invoegen zelf mee (scroll anchoring), en dat … … 2441 2476 2442 2477 .feed-reader .read-post { 2478 /* Snap naar de BOVENkant van een bericht, zacht (proximity op html) en nooit 2479 dwingend (stop: normal). Een korte post vult het scherm, zodat hij niet als 2480 snipper tussen twee lijnen hangt. 2481 De uitzondering staat NIET hier maar in mod/read.js: een bericht dat langer 2482 is dan het scherm krijgt scroll-snap-align:none, anders trekt de browser je 2483 tijdens het lezen terug naar zijn bovenrand en lijkt het of het scrollen 2484 stopt. "Past het op het scherm?" is een vraag over gemeten hoogte, en die 2485 kan CSS niet stellen. */ 2486 /* Je LANDT op de bovenkant van een bericht -- dat is wat "snap to post" 2487 hoort te betekenen. (align:end probeerde ik ook; dan land je op de 2488 ONDERKANT van het vorige bericht, en bij een lang bericht zie je dus zijn 2489 laatste schermvol in plaats van de kop van het volgende.) 2490 Wanneer die bovenkant een snappunt IS, staat in mod/read.js: alleen zolang 2491 je er nog niet voorbij bent. Eenmaal in een bericht snapt er niets meer, 2492 ook niet naar zijn eigen bovenrand -- anders trekt proximity je terug 2493 zodra je een paar regels verder leest. */ 2443 2494 scroll-snap-align: start; 2444 2495 scroll-snap-stop: normal; 2445 min-height: 100svh; 2496 /* GEEN min-height meer. Die rekte elk bericht tot een vol scherm, en bij een 2497 kort bericht leverde dat een halve pagina leegte op onder "Replies and 2498 reactions" -- je zat naar niets te kijken en moest verder scrollen om te 2499 ontdekken dat er nog iets kwam. Robins vondst (20-8), met een 2500 schermafbeelding erbij. 2501 Zonder die hoogte is de stroom gewoon bericht na bericht: je ziet het 2502 volgende meteen onder het vorige beginnen. Het snappen doet nog steeds 2503 zijn werk aan de grens -- dat hangt aan scroll-snap-align en niet aan de 2504 hoogte -- dus de streep lijnt nog altijd uit met de bovenkant van het 2505 volgende bericht. */ 2446 2506 max-width: 46rem; 2447 2507 margin: 0 auto; … … 2461 2521 scrollen om te zien wat het IS. */ 2462 2522 .feed-reader .read-cover { 2463 /* Krimpt om het beeld heen en staat gecentreerd, in plaats van de kolom vol 2464 te trekken. Anders staat een klein plaatje in een veel te grote lijst. */ 2465 width: fit-content; 2466 max-width: 100%; 2467 margin: 0 auto 1.2rem; 2523 /* Volle kolombreedte: de afbeelding erin neemt die breedte, dus de figure 2524 hoeft niet meer om het beeld te krimpen. */ 2525 width: 100%; 2526 margin: 0 0 1.2rem; 2468 2527 border-radius: 10px; 2469 2528 overflow: hidden; … … 2472 2531 .feed-reader .read-cover video { 2473 2532 display: block; 2474 /* GEEN width:100%. Dat blies een cover van 221x165 op tot 505x378 -- ruim 2475 twee keer zo groot als hij is, en dus wazig. De tijdlijn deed dat nooit: 2476 daar zat een cover in een vakje van 120px, dus klein bleef klein. Met 2477 auto + max-width vult een grote afbeelding de kolom en blijft een kleine 2478 op ware grootte staan. 2479 En GEEN object-fit:cover: samen met de hoogtegrens sneed dat de onderkant 2480 eraf (553x464 kwam er als 505x400 uit). Met max-width en max-height houdt 2481 de browser de verhouding zelf en past het beeld HEEL in het vak. */ 2482 width: auto; 2533 /* Neemt de VOLLE kolombreedte, met de verhouding intact (object-fit 2534 weggelaten, dus geen bijsnijden). Een cover die van zichzelf kleiner is 2535 wordt netjes tot de kolom opgeschaald in plaats van als postzegeltje te 2536 blijven staan -- dat was te klein. De hoogtegrens houdt een staande foto 2537 nog binnen de perken zodat titel + eerste alinea boven de vouw blijven; 2538 hij krimpt dan mee in plaats van bijgesneden te worden. */ 2539 display: block; 2540 width: 100%; 2483 2541 height: auto; 2484 max- width: 100%;2485 max-height: 45svh;2542 max-height: 70svh; 2543 object-fit: contain; 2486 2544 /* Een logo met doorzichtige achtergrond zweeft anders op de paginakleur; 2487 2545 dezelfde keuze als bij .post-list-cover in de tijdlijn. */ … … 2506 2564 .feed-reader .read-open:focus-visible { opacity: 1; } 2507 2565 2566 /* Terug naar boven. Rechtsonder, want daar zit de duim -- en boven de tabbalk, 2567 die op mobiel 1050 is en anders overheen zou vallen. Onzichtbaar tot je ver 2568 genoeg bent, zodat hij niet meteen in de weg staat bij het eerste bericht. */ 2569 .read-top { 2570 position: fixed; 2571 right: max(1rem, env(safe-area-inset-right, 0)); 2572 bottom: calc(env(safe-area-inset-bottom, 0) + 4.75rem); 2573 z-index: 1040; 2574 display: grid; 2575 place-items: center; 2576 width: 44px; 2577 height: 44px; /* 44px = de kleinste maat die een duim betrouwbaar raakt */ 2578 border-radius: 999px; 2579 border: 1px solid var(--rule); 2580 background: color-mix(in srgb, var(--paper) 88%, transparent); 2581 backdrop-filter: blur(14px) saturate(140%); 2582 -webkit-backdrop-filter: blur(14px) saturate(140%); 2583 color: var(--ink); 2584 box-shadow: 0 2px 12px color-mix(in srgb, var(--ink) 12%, transparent); 2585 cursor: pointer; 2586 opacity: 0; 2587 pointer-events: none; 2588 transition: opacity .18s ease, transform .18s ease; 2589 transform: translateY(6px); 2590 } 2591 .read-top.is-zichtbaar { opacity: 1; pointer-events: auto; transform: none; } 2592 /* Buiten de leesweergave bestaat hij niet -- home.ejs rendert alle drie de 2593 secties, dus zonder deze regel zweeft hij ook boven Tijdlijn en Grid. */ 2594 body:not([data-feed-view="reader"]) .read-top, 2595 body:not(.on-home) .read-top { display: none; } 2596 /* Op desktop is er geen tabbalk, dus mag hij lager staan. */ 2597 @media (min-width: 768px) { 2598 .read-top { bottom: 1.5rem; right: 1.5rem; } 2599 } 2508 2600 @media (prefers-reduced-motion: reduce) { 2509 html:has(body.on-home[data-feed-view="reader"]) { scroll-snap-type: none; } 2601 .read-top { transition: none; transform: none; } 2602 } 2603 2604 @media (prefers-reduced-motion: reduce) { 2605 html:has(body.on-home[data-feed-view="reader"]) { 2606 scroll-snap-type: none; 2607 scroll-behavior: auto; 2608 } 2510 2609 } 2511 2610
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)