Discussion:
Vraag over schermhoogte
(te oud om op te antwoorden)
Sjoerd
2022-02-12 12:39:31 UTC
Permalink
Stel, ik plaats een afbeelding direct in de body, met een breedte van 100%:

<body>
<img src="afbeelding.jpg" alt="" style="width:100%">
</body>

De afbeelding strekt zich nu over de hele breedte van het scherm uit.
Wanneer ik nu 'width' vervang door 'height', dan zou je verwachten dat de
afbeelding zich over de hele hoogte van het scherm uitstrekt.
Maar nee, dit werkt niet.
Is er een manier bekend om dit toch te bewerkstelligen?

Ik kom dit tegen bij het maken van een fotoviewer. De bedoeling is om foto's
met verschillende breedte-/hoogteverhoudingen op elk scherm optimaal weer te
geven.
unknown
2022-02-12 15:56:40 UTC
Permalink
Post by Sjoerd
<body>
<img src="afbeelding.jpg" alt="" style="width:100%">
</body>
De afbeelding strekt zich nu over de hele breedte van het scherm uit.
Wanneer ik nu 'width' vervang door 'height', dan zou je verwachten dat de
afbeelding zich over de hele hoogte van het scherm uitstrekt.
Maar nee, dit werkt niet.
"height: 100%" betekent "neem 100% van de hoogte van het parent element in",
niet "neem 100% van de hoogte van het scherm in".
Post by Sjoerd
Is er een manier bekend om dit toch te bewerkstelligen?
Een mogelijkheid is om deze style toe te voegen:

html, body {
padding: 0;
margin: 0;
height: 100%;
}

Zo wordt de parent van je <img> (namelijk <body>) 100% van de hoogte van
díe parent (namelijk <html>) en die neemt de hele hoogte in beslag.

Een andere mogelijkheid is om de <img> "los te koppelen" van de parent door
'm absoluut te positioneren:

<img src='afbeelding.jpg' style='height: 100%; position: absolute'>

Het heeft wel allemaal z'n voordelen én z'n nadelen.
--
robert
Sjoerd
2022-02-12 21:09:26 UTC
Permalink
Post by unknown
Post by Sjoerd
<body>
<img src="afbeelding.jpg" alt="" style="width:100%">
</body>
De afbeelding strekt zich nu over de hele breedte van het scherm uit.
Wanneer ik nu 'width' vervang door 'height', dan zou je verwachten dat de
afbeelding zich over de hele hoogte van het scherm uitstrekt.
Maar nee, dit werkt niet.
"height: 100%" betekent "neem 100% van de hoogte van het parent element in",
niet "neem 100% van de hoogte van het scherm in".
Post by Sjoerd
Is er een manier bekend om dit toch te bewerkstelligen?
html, body {
padding: 0;
margin: 0;
height: 100%;
}
Zo wordt de parent van je <img> (namelijk <body>) 100% van de hoogte van
díe parent (namelijk <html>) en die neemt de hele hoogte in beslag.
Een andere mogelijkheid is om de <img> "los te koppelen" van de parent door
<img src='afbeelding.jpg' style='height: 100%; position: absolute'>
Het heeft wel allemaal z'n voordelen én z'n nadelen.
Wat ik bij nader inzien nog even op wou merken: in plaats van schermbreedte
en -hoogte werd eigenlijk bedoeld: breedte en hoogte van het browservenster,
ook 'viewport' genoemd.

Maar het blijkt te werken. Mijn dank, weer wat geleerd.
Wel bevinden de afbeeldingen zich in een div, deze weer in een andere div,
en deze in de body. Je moet dus zowel de html, de body als die twee div's een
hoogte van 100% geven, maar dan werkt het ook.

Ik vond trouwens ook een image viewer als jQuery-toepassing:

https://plugins.jquery.com/fotorama/
Homepage: https://fotorama.io

Op die homepage zie je een demo, en de installatie-instructies en de
configuratie-opties zijn erg eenvoudig te volgen, en ook hier kun je de
foto's optimaal in de viewport weergeven, dus met maximale hoogte of breedte.

Nadeel van zoiets vind ik alleen dat je niet meer begrijpt hoe het werkt,
dus mis je een stuk vrijheid. De manier waarop eventuele onderschriften
('captions') worden weergegeven, vind ik bijvoorbeeld niet zo fraai, maar om
dit te veranderen, moet je in de code omwroeten, en dat is toch wel haast
ondoenlijk.

Loading...