Ulli Horlacher:
> Arno Welzel <
use...@arnowelzel.de> wrote:
[...]
>> Die Lösung wäre also:
>>
>> <img style="max-width:100%; height:auto" src="$src" />
>
> Das funktioniert leider nicht, da ich (auch) Bilder habe, die deutlich
> hoeher als breit sind. Von der Breite her passen die also rein, aber
> vertikal muss man scrollen. Genau DAS will ich aber verhindern.
Das kannst Du aber nicht verhindern, solange das Bild in einem Dokument
ist, was insgesamt scrollbar ist.
CSS kann sich nur an den Großen umgebender Elemente orientieren. Du
musst also das Bild in einen Kasten einbinden, der seinerseits eine
maximale Höhe von 100% abzüglich weiterer Element innerhalb des
Viewports definiert.
Bei mir schon:
<
https://nextcloud.0x0c.de/s/2BaNkja8Nq7aWCi/preview>
Wenn das Fenster kleiner gezogen wird, rutscht der Text ein Stück nach
unten raus, aber das Bild wird dennoch kleiner:
<
https://nextcloud.0x0c.de/s/LW5Yj6kiTtFJoiA/preview>
Du hast dafür angegeben: "max-width:80vw;max-height:80vh"
Ob aber 80% des Viewports ausreichen, um auch die übrigen Elemente um
das Bild herum anzuzeigen, hängt halt davon ab, wie groß der Viewport
insgesamt ist. Ich würde vermutlich versuchen, das Layout auf einem
Flex-Grid aufzubauen statt einer Tabelle, dann kann man solche Aspekte
leichter berücksichtigen.
Aber ein anderer Ansatz mit wenig Aufwand, der aber in älteren Browsern
u.U. nicht funktioniert:
"max-width:calc(100vw - 8em);max-height:calc(100vh - 10em)"
Das bedeutet übersetzt:
Maximal 100% breite abzüglich 8em für die Elemente neben dem Bild und
maximal 100% Höhe abzüglich der Elemente über und unter dem Bild.
Achtung - die Leerzeichen vor und nach dem Minus-Zeichen müssen so drin
sein!
Siehe dazu auch: <
https://developer.mozilla.org/de/docs/Web/CSS/calc>