CSS tvinger billedet til at ændre størrelse og bevarer formatforholdet
Jeg arbejder med billeder, og jeg er stødt på et problem med billedformatet.
<img src="big_image.jpg" width="900" height="600" alt="" />
Som du kan se, er height
og width
allerede angivet. Jeg har tilføjet CSS-regel for billeder:
img {
max-width:500px;
}
Men for big_image.jpg
får jeg width=500
og height=600
. Hvordan kan jeg indstille billeder til at blive omformet, mens de beholder deres formatforhold.
497
3
Egenskaben background-size er kun ie>=9, men hvis det er i orden med dig, kan du bruge en div med
background-image
og indstillebackground-size: contain
:Nu kan du bare sætte din div-størrelse til hvad du vil, og ikke alene vil billedet beholde sit formatforhold, det vil også blive centraliseret både vertikalt og horisontalt i div'en. Bare glem ikke at indstille størrelserne i css'en, da divs ikke har attributten width/height på selve tagget.
Denne fremgangsmåde er anderledes end setecs svar, ved at bruge denne fremgangsmåde vil billedområdet være konstant og defineret af dig (efterlader tomme rum enten horisontalt eller vertikalt afhængigt af div-størrelsen og billedets formatforhold), mens setecs svar vil give dig en boks, der nøjagtigt har samme størrelse som det skalerede billede (uden tomme rum).
Rediger: Ifølge MDN background-size documentation kan du simulere background-size-egenskaben i IE8 ved hjælp af en proprietær filterdeklaration:
Fjern egenskaben "height".
Ved at angive begge ændrer du billedets formatforhold. Hvis du kun angiver den ene, ændres størrelsen, men billedformatet bevares.
Eventuelt for at begrænse overdimensioneringer:
Der er ingen standardmetode til at bevare billedformatet for billeder med
width
,height
ogmax-width
angivet sammen.Så vi er tvunget til enten at angive
width
ogheight
for at undgå at siden "hopper" under indlæsning af billeder, eller at brugemax-width
og ikke angive dimensioner for billeder.Det giver typisk ikke meget mening at angive kun
width
(udenheight
), men du kan forsøge at tilsidesætte HTML-attributtenheight
ved at tilføje en regel somIMG {height: auto; }
i dit stylesheet.Se også den relaterede Firefox [fejl 392261] (https://bugzilla.mozilla.org/show_bug.cgi?id=392261).