2012-10-16 12 views
70

Ich verwende ein HTML-Img-Tag, um ein Foto in unserer Anwendung zu zeigen. Ich habe sein Attribut Höhe und Breite auf 64 gesetzt. Ich muss jede Bildauflösung (z. B. 256 x 256, 1024 x 768, 500 x 400, 205 x 246 usw.) als 64 x 64 anzeigen. Wenn Sie jedoch die Attribute height und width eines img-Tags auf 64 setzen, wird das Seitenverhältnis nicht beibehalten, sodass das Bild verzerrt aussieht.So behalten Sie das Seitenverhältnis mit HTML IMG-Tag

Als Referenz finden Sie meine genauen Code ist:

<img src="Runtime Path to photo" border="1" height="64" width="64"> 
+0

möglich Duplikat [HTML/IE: Stretch-Bildseitenverhältnis zu passen, bewahren] (http: // stac koverflow.com/questions/643500/html-ie-stretch-image-to-fit-preserve-aspect-ratio) –

+0

Chridam, es ist lange Zeit, als ich diese Frage gestellt habe. Ich habe das Unternehmen verlassen, in dem ich für dieses Thema gearbeitet habe. Ich konnte die vorgeschlagenen Lösungen nicht ausprobieren, weil ich an anderen Prioritäten arbeitete, um die Fristen einzuhalten. Ich konnte keine Chance bekommen, weitere Fortschritte zu machen. –

Antwort

1

Wickeln Sie das Bild in einem div mit den Abmessungen 64x64 und setzen width: inherit auf dem Bild:

<div style="width: 64px; height: 64px;"> 
    <img src="Runtime path" style="width: inherit" /> 
</div> 
85

nicht festlegen Höhe und Breite. Verwenden Sie das eine oder das andere und das korrekte Seitenverhältnis wird beibehalten.

.widthSet { 
 
    max-width: 100px; 
 
} 
 

 
.heightSet { 
 
    max-height: 100px; 
 
}
<img src="http://placehold.it/200x250" /> 
 

 
<img src="http://placehold.it/200x250" width="64" /> 
 

 
<img src="http://placehold.it/200x250" height="64" /> 
 

 
<img src="http://placehold.it/200x250" class="widthSet" /> 
 

 
<img src="http://placehold.it/200x250" class="heightSet" />

+0

Die Bilder auf der Geige sind kaputt. – theblang

+4

... aber was, wenn Sie Höhe und Breite reparieren möchten? – fatuhoku

-1

Warum Sie keine separate CSS-Datei verwenden, um die Höhe und die Breite des Bildes, das Sie anzeigen möchten, halten? Auf diese Weise können Sie die Breite und Höhe unbedingt bereitstellen.

zB:

 image { 
     width: 64px; 
     height: 64px; 
     } 
29
<img src="Runtime Path to photo" style="border: 1px solid #000; max-width:64px; max-height:64px;"> 
+2

Dies ist die richtige Lösung, da sie weiterhin unabhängig von der Ausrichtung des Bildes ist.Die Lösung von 3rror404 erfordert, dass Sie wissen, ob das Bild breiter als hoch oder umgekehrt ist. – devios1

+2

setzen Sie auch 'width' und' height' auf 'auto'. – Mahmoodvcs

+0

Richtige Lösung für die Beschränkung von Höhe und Breite. –

25

Set width und height der Bilder zu auto, sondern begrenzen beide max-width und max-height:

img { 
    max-width:64px; 
    max-height:64px; 
    width:auto; 
    height:auto; 
} 

Fiddle

Wenn Sie Bilder beliebiger Größe in den "64x64px" -Frames anzeigen möchten, können Sie Inline-Block-Wrapper und deren Positionierung verwenden, z. B. in this fiddle.

+4

Du bist das zweite Fiddle-Beispiel, das super für mich funktioniert hat. Vielen Dank! – Daniel

9

Keine der aufgelisteten Methoden skaliert das Bild auf die größtmögliche Größe, die in eine Box passt, während das gewünschte Seitenverhältnis beibehalten wird.

Dies kann nicht mit dem IMG-Tag (zumindest nicht ohne ein wenig JavaScript) durchgeführt werden, aber es kann wie folgt erfolgen:

<div style="background:center no-repeat url(...);background-size:contain;width:...;height:..."></div> 
+2

Ja. Verwenden Sie 'style =" background: url ('_'); background-size: Deckblattbreite: _px height: _px "' für das '' -Tag. –

+1

Danke, @UjjwalSingh. In der Tat brauchen wir "cover", nicht "contain", um die Bildgröße auf das größtmögliche zu maximieren. 'contain' führt zu" letterboxing ". –

25

hier die Probe eines

ist

div{ 
 
    width: 200px; 
 
    height:200px; 
 
    border:solid 
 
} 
 

 
img{ 
 
    width: 100%; 
 
    height: 100%; 
 
    object-fit: contain; 
 
    }
<div> 
 
    <img src="https://upload.wikimedia.org/wikipedia/meta/0/08/Wikipedia-logo-v2_1x.png"> 
 
</div>

+0

funktioniert nicht für firefox – Sllouyssgort

+0

es funktioniert in firefox jetzt –

+3

Nur eine Anmerkung an Leute, die diese Lösung verwenden möchten: Objekt-Fit wird nicht sehr gut von Browsern unterstützt. Es wird von IE oder Edge überhaupt nicht unterstützt. Quelle: http://caniuse.com/#feat=object-fit –

Verwandte Themen