feat: tik op het regenblok voor de Buienradar-animatie
Het regenblok linksonder opent een overlay met de geanimeerde regenradar van Buienradar (550x512, tijd in het beeld), naast de regencijfers die we al hebben: vandaag, de 3 vorige dagen en het maandtotaal. Sluit na 20 seconden of bij een tik, net als het uuroverzicht. Het beeld loopt via onze eigen /api/radar.php in plaats van een <img> rechtstreeks naar Buienradar: de spec wil alles lokaal geserveerd, de iPad praat zo nooit met een derde partij, we cachen 4 minuten (de radar ververst elke 5) en de servicewerker kan het laatste beeld offline bewaren. Bij een storing komt het laatst opgehaalde beeld terug; pas als er niets is, een nette melding in plaats van een leeg vlak. Bronvermelding staat in de overlay, zoals Buienradar vraagt. Verder: de overlay-machinerie (20s-timer, balk, sluiten) staat nu een keer in plaats van per overlay, Http kan optioneel redirects volgen (de beeld-API leidt door naar een CDN), en alle /api/-paden zijn in de servicewerker network-first met een cachesleutel zonder querystring. Servicewerker naar v7. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+19
-3
@@ -163,8 +163,9 @@ html, body {
|
||||
}
|
||||
.banner small { display: block; margin-top: 16px; font-size: 20px; color: var(--muted); }
|
||||
|
||||
/* Uuroverzicht per dag: tik op een dagkolom om te openen, tik erop of wacht 20s om te sluiten. */
|
||||
.hour-overlay {
|
||||
/* Overlays (uuroverzicht, regenradar): tik om te openen, tik erop of wacht 20s om te sluiten.
|
||||
De .ho-*-chrome (balk, kop) wordt door beide overlays gedeeld. */
|
||||
.overlay {
|
||||
position: absolute;
|
||||
left: 44px;
|
||||
right: 44px;
|
||||
@@ -180,7 +181,7 @@ html, body {
|
||||
box-shadow: 0 12px 32px rgba(27, 42, 53, .12);
|
||||
z-index: 5;
|
||||
}
|
||||
.hour-overlay[hidden] { display: none; }
|
||||
.overlay[hidden] { display: none; }
|
||||
|
||||
.ho-bar { margin: 0 30px; height: 4px; border-radius: 2px; background: var(--line); overflow: hidden; }
|
||||
.ho-bar i { display: block; width: 100%; height: 100%; background: var(--rain); transform-origin: left; }
|
||||
@@ -207,6 +208,21 @@ html, body {
|
||||
|
||||
.ho-hours span { font-size: 16px; color: var(--muted); }
|
||||
|
||||
/* Regenradar */
|
||||
.ro-body { display: flex; gap: 56px; margin: 0 30px; min-height: 0; }
|
||||
.ro-map { display: flex; align-items: center; justify-content: center; width: 560px; flex: none; }
|
||||
.ro-img { height: 512px; width: auto; display: block; border-radius: 10px; }
|
||||
.ro-status { font-size: 22px; color: var(--muted); }
|
||||
|
||||
.ro-side { display: flex; flex-direction: column; justify-content: center; }
|
||||
.ro-big { font-size: 26px; color: var(--rain); }
|
||||
.ro-big span { font-size: 76px; font-weight: 300; line-height: 1; }
|
||||
.ro-sub { font-size: 19px; color: var(--muted); margin-bottom: 26px; }
|
||||
.ro-days p { display: flex; justify-content: space-between; width: 260px; font-size: 21px; color: var(--muted); padding: 7px 0; border-top: 1px solid var(--line); }
|
||||
.ro-days b { color: var(--ink); font-weight: 600; }
|
||||
.ro-month { width: 260px; font-size: 19px; color: var(--muted); margin-top: 18px; }
|
||||
.ro-source { font-size: 15px; color: var(--muted); margin-top: auto; padding-top: 22px; }
|
||||
|
||||
#rotate {
|
||||
display: none;
|
||||
position: fixed;
|
||||
|
||||
Reference in New Issue
Block a user