CSS forceert het formaat van afbeeldingen en houdt de beeldverhouding
Ik werk met afbeeldingen, en ik stuitte op een probleem met beeldverhoudingen.
<img src="big_image.jpg" width="900" height="600" alt="" />
Zoals je kunt zien, zijn height
en width
al opgegeven. Ik heb CSS regel toegevoegd voor afbeeldingen:
img {
max-width:500px;
}
Maar voor big_image.jpg
, krijg ik width=500
en height=600
. Hoe kan ik instellen dat afbeeldingen verkleind worden, met behoud van hun beeldverhoudingen.
497
3
De background-size eigenschap is ie>=9 alleen, maar als je dat goed vindt, kun je een div met
background-image
gebruiken enbackground-size: contain
instellen:Nu kun je gewoon de grootte van je div instellen op wat je maar wilt en niet alleen zal de afbeelding zijn aspect ratio behouden, het zal ook zowel verticaal als horizontaal gecentraliseerd worden binnen de div. Vergeet alleen niet de afmetingen in te stellen op de css aangezien divs geen width/height attribuut hebben op de tag zelf.
Deze aanpak is anders dan setecs antwoord, met deze aanpak zal het afbeeldingsgebied constant zijn en door u worden gedefinieerd (waarbij lege ruimtes horizontaal of verticaal worden gelaten, afhankelijk van de div grootte en de beeldverhouding), terwijl setecs antwoord u een box zal geven die precies de grootte heeft van de geschaalde afbeelding (zonder lege ruimtes).
Bewerken: Volgens de MDN background-size documentatie kun je de background-size eigenschap in IE8 simuleren met behulp van een eigen filterdeclaratie:
Verwijder de "height" eigenschap.
Door beide te specificeren verander je de aspect ratio van de afbeelding. Als je er maar één instelt, wordt de grootte aangepast, maar blijft de beeldverhouding behouden.
Optioneel, om oversizings te beperken:
Er is geen standaard manier om de beeldverhouding te behouden voor afbeeldingen met
breedte
,hoogte
enmax-breedte
samen gespecificeerd.We zijn dus gedwongen om
width
enheight
te specificeren om "sprongen" in de pagina tijdens het laden van afbeeldingen te voorkomen, of ommax-width
te gebruiken en geen afmetingen voor afbeeldingen op te geven.Alleen
width
opgeven (zonderheight
) heeft meestal niet veel zin, maar je kunt proberen om hetheight
HTML-attribuut te overschrijven door een regel alsIMG {height: auto; }
toe te voegen aan je stylesheet.Zie ook de gerelateerde Firefox bug 392261.