Handy-Darstellung: Diagramme, Meteogramm und Abstaende
Auf dem Handy war die Seite bisher nur mit der Desktopversion des Browsers brauchbar. Drei Ursachen, alle nachgemessen bei 375 px: Die Diagramme standen im Hochformat, 301 x 400 px - die Zeitachse lag auf der kurzen Seite. Die Hoehe kam nicht aus dem Container: .chart-container hatte inline height:100% in einem Elternelement ohne Hoehe, und die Canvas trugen height="400px;", was kein gueltiger Zahlenwert ist. Die Hoehe steht jetzt im Stylesheet, 400 px am Rechner und 250 px unter 768 px Breite, die Beschriftung dort 8 statt 10 px. Das Meteogramm hat sich nicht angepasst, sondern gequetscht. meteoblue legt sein Bild einmal beim Laden fest und zeichnet es bei einer Breitenaenderung nicht neu; unter etwa 600 px ueberlagern sich Wochentage und Stundenachse. Es wird jetzt in mindestens 640 px Breite geladen - auf breiten Karten gleich in Kartenbreite, dort aendert sich nichts - und, wenn die Karte schmaler ist, als Ganzes verkleinert. Zuschnitt und Skalierung setzt das Skript direkt am Element, nicht ueber das Stylesheet: sonst haengt die Darstellung an einer womoeglich veralteten solar.css im Browser-Cache, und der breit geladene Rahmen ragt ungeschnitten aus der Karte. Passend dazu bekommt solar.css eine Versionskennung aus filemtime(), wie sie die Skripte in footer.php und adminlte.min.css laengst tragen. Ohne sie kam auf schon einmal besuchten Geraeten die alte Datei aus dem Cache. Die Statistik-Kacheln lagen in nackten .col ohne Breitenangabe; Bootstrap laesst sie dann nach Textlaenge umbrechen, mal zwei, mal drei je Zeile und unterschiedlich breit. Die Breite kommt jetzt aus row-cols-2/row-cols-md-4, und die Karte fuellt die Zeilenhoehe, damit die Werte trotz ein- oder zweizeiliger Titel auf einer Linie stehen. Zuletzt sind die Abstaende unter 768 px enger gefasst - auf .app-content beschraenkt, damit Seitenleiste, Kopfzeile und Modals unberuehrt bleiben: Spaltenabstand 24 -> 8 px, Kartenabstand 24 -> 12 px, Polsterung 16 -> 8 px. Die nutzbare Breite steigt damit von 301 auf 317 px. Geprueft bei 375 und 1200 px auf Solar, Historie, Heizung, Home und Wetter: kein Querlauf, am Rechner unveraenderte Werte. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -19,3 +19,69 @@ input[type='range']::-webkit-slider-runnable-track {
|
||||
background-size: var(--background-size, 0%) 100%;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
/* Diagramme (Chart.js). Die Hoehe kommt aus diesem Container, nicht aus dem
|
||||
canvas - die Charts laufen mit maintainAspectRatio: false. Auf dem Handy
|
||||
ist der Container nur rund 300 px breit; mit 400 px Hoehe wird aus einer
|
||||
Zeitreihe ein Hochformat, in dem die Zeitachse die kurze Seite ist. */
|
||||
.chart-container {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 400px;
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.chart-container {
|
||||
height: 250px;
|
||||
}
|
||||
}
|
||||
|
||||
/* Statistik-Kacheln (ajax/getStats.php). Sie lagen in nackten .col ohne
|
||||
Breitenangabe - Bootstrap laesst sie dann nach Textlaenge umbrechen, mal
|
||||
zwei, mal drei je Zeile und unterschiedlich breit. Die Breite kommt jetzt
|
||||
aus row-cols-* in getStats.php; hier sorgt die volle Kartenhoehe dafuer,
|
||||
dass die Werte trotz ein- oder zweizeiliger Titel auf einer Linie
|
||||
stehen. */
|
||||
.card.stats {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.card.stats .card-body {
|
||||
flex: 1 1 auto;
|
||||
}
|
||||
|
||||
/* Auf dem Handy gehen von 375 px rund 75 an Innenabstaende verloren, und
|
||||
zwischen den Karten stehen 24 px. Beides wird hier enger gefasst - nur
|
||||
im Inhaltsbereich, damit Seitenleiste, Kopfzeile und Modals unberuehrt
|
||||
bleiben. Die Abstandsklassen von Bootstrap (mb-4) tragen !important,
|
||||
deshalb steht es auch hier. */
|
||||
@media (max-width: 767.98px) {
|
||||
.app-content {
|
||||
padding: 0 .25rem;
|
||||
}
|
||||
|
||||
.app-content-header {
|
||||
padding: .5rem .25rem;
|
||||
}
|
||||
|
||||
.app-content .row {
|
||||
--bs-gutter-x: .5rem;
|
||||
}
|
||||
|
||||
.app-content .card {
|
||||
margin-bottom: .75rem !important;
|
||||
}
|
||||
|
||||
/* Nur der Standardwert wird kleiner; eigene Angaben im Markup (p-0 fuer
|
||||
das Realtime-SVG, p-2 fuer die Statistik) gelten weiter. */
|
||||
.app-content .card-body {
|
||||
padding: .5rem;
|
||||
}
|
||||
|
||||
/* Eine Kachel ist auf dem Handy rund 150 px breit. In voller Schrift
|
||||
passt "Verbrauchsersparnis" dort nicht in eine Zeile und wird mitten
|
||||
im Wort umbrochen. */
|
||||
.card.stats .card-body {
|
||||
font-size: .8rem;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user