Ich muss dieses Bild auf die maximal mögliche Größe dehnen, ohne es zu überlaufen <div>
oder das Bild zu verzerren.
Ich kann das Seitenverhältnis des Bildes nicht vorhersagen, daher kann ich nicht wissen, ob ich Folgendes verwenden soll:
<img src="url" style="width: 100%;">
oder
<img src="url" style="height: 100%;">
Ich kann nicht beide verwenden (dh style = "width: 100%; height: 100%;"), da dadurch das Bild so gedehnt wird, dass es zum passt <div>
.
Die <div>
Größe wird in Prozent des Bildschirms festgelegt, was ebenfalls unvorhersehbar ist.
Antworten:
Update 2016:
Moderne Browser verhalten sich viel besser. Sie müssen lediglich die Bildbreite auf 100% einstellen ( Demo ).
Da Sie das Seitenverhältnis nicht kennen, müssen Sie einige Skripte verwenden. So würde ich es mit jQuery ( Demo ) machen:
CSS
HTML
Skript
quelle
width:auto
oderheight:auto
nicht auf die Anzeige Ihrer Bilder aus. Tatsächlich hat von allen Eigenschaften, die Sie auf das Bild anwenden, nurmax-width: 100%
eine Auswirkung, und es wirkt sich nur auf das Landschaftsbild aus. Am wichtigsten ist jedoch, dass Ihre Antwort nicht dazu beiträgt, ein kleines Bild zu dehnen, um einen größeren Behälter zu füllen.Es gibt einen viel einfacheren Weg, dies nur mit
CSS
und zu tunHTML
:HTML:
CSS:
Dadurch wird Ihr Bild als Hintergrund platziert und gedehnt, um es
div
ohne Verzerrung an die Größe anzupassen.quelle
background-size: cover;
ist die wahre Magie hier, und es ist CSS3, hat aber angemessene Browserunterstützung für die neuesten Versionen (siehe: w3schools.com/cssref/css3_pr_background-size.asp )<div style="background-image: url('path/to/image.jpg');" class="fill"></div>
background-size: cover
Wenn das Seitenverhältnis nicht beibehalten wird, werden Teile des Bildes zugeschnitten, die nicht proportional zum Element sind. Siehe hierKeine perfekte Lösung, aber dieses CSS könnte helfen. Durch den Zoom funktioniert dieser Code, und der Faktor sollte theoretisch unendlich sein, um ideal für kleine Bilder zu funktionieren - aber 2, 4 oder 8 funktionieren in den meisten Fällen einwandfrei.
quelle
zoom
Liebe von Firefox?zoom
implementiert, aber hier ist der Bug-Link als zukünftige Referenz: bugzilla.mozilla.org/show_bug.cgi?id=390936Wenn Sie können, verwenden Sie Hintergrundbilder und stellen Sie ein
background-size: cover
. Dadurch wird der Hintergrund das gesamte Element abdecken.CSS
Wenn Sie keine Inline-Bilder mehr verwenden möchten, stehen Ihnen einige Optionen zur Verfügung. Erstens gibt es
Objektanpassung
Diese Eigenschaft wirkt sich auf Bilder, Videos und andere ähnliche Objekte aus
background-size: cover
.CSS
Leider ist die Browserunterstützung nicht so gut, da der IE bis Version 11 sie überhaupt nicht unterstützt. Die nächste Option verwendet jQuery
CSS + jQuery
HTML
CSS
Benutzerdefiniertes jQuery-Plugin
Verwenden Sie das Plugin wie folgt
Es wird ein Bild aufgenommen, als Hintergrundbild auf dem Wrapper-Element des Bildes festgelegt und das entfernt
img
Tag aus dem Dokument. Zuletzt könnten Sie verwendenReines CSS
Sie können dies als Fallback verwenden. Das Bild wird vergrößert, um den Container abzudecken, aber nicht verkleinert.
CSS
Hoffe das könnte jemandem helfen, fröhliches Codieren!
quelle
min-
und geändertwidth: 100%; height: 100%;
und gearbeitet! tolle Lösung! +1 Danke!background-size: contain
ist auch nützlich, wenn Sie möchten, dass keines der Bilder jemals abgeschnitten wird.zoom:0.001
die Pure CSS-Lösung erweitern, um sie zu verkleinern.Dank CSS3
https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit
IE und EDGE wie immer Außenseiter: http://caniuse.com/#feat=object-fit
quelle
Update 2019.
Sie können jetzt die
object-fit
CSS-Eigenschaft verwenden, die die folgenden Werte akzeptiert:fill | contain | cover | none | scale-down
https://developer.mozilla.org/en-US/docs/Web/CSS/object-fit
Als Beispiel könnten Sie einen Container haben, der ein Bild enthält.
quelle
Das ist unmöglich mit nur HTML und CSS oder zumindest wild exotisch und kompliziert. Wenn Sie bereit sind, Javascript zu verwenden, finden Sie hier eine Lösung mit jQuery:
Dadurch wird die Größe des Bilds so geändert, dass es unabhängig von seiner Größe immer in das übergeordnete Element passt. Und wie es an die gebunden ist
$(window).resize()
Ereignis gebunden ist, wird das Bild angepasst, wenn der Benutzer die Fenstergröße ändert.Dies versucht nicht, das Bild im Container zu zentrieren, das wäre möglich, aber ich denke, das ist nicht das, wonach Sie suchen.
quelle
Stellen Sie die Breite und Höhe des äußeren
container
Bereichs ein. Verwenden Sie dann das folgende Styling für img:Dies hilft Ihnen dabei, ein Seitenverhältnis Ihres Bildes beizubehalten
quelle
Wenn Sie eine maximale Breite oder Höhe festlegen möchten (damit diese nicht sehr groß wird), während Sie das Seitenverhältnis der Bilder beibehalten, können Sie Folgendes tun:
quelle
Ich bin auf diese Frage gestoßen, als ich nach einem ähnlichen Problem gesucht habe. Ich erstelle eine Webseite mit ansprechendem Design und die Breite der auf der Seite platzierten Elemente wird auf einen Prozentsatz der Bildschirmbreite festgelegt. Die Höhe wird mit einem vw-Wert eingestellt.
Da ich Beiträge mit PHP und einem Datenbank-Backend hinzufüge, kam reines CSS nicht in Frage. Ich fand die jQuery / Javascript-Lösung jedoch etwas mühsam, so dass ich eine ordentliche (also denke ich mich zumindest) Lösung gefunden habe.
HTML (oder PHP)
Durch die Verwendung von style = "" ist es möglich, dass PHP meine Seite dynamisch aktualisiert, und das CSS-Styling zusammen mit style = "" führt zu einem perfekt abgedeckten Bild, das so skaliert ist, dass es das dynamische div-Tag abdeckt.
quelle
Sie können
object-fit: cover;
auf dem übergeordneten div verwenden.https://css-tricks.com/almanac/properties/o/object-fit/
quelle
Damit dieses Bild auf die maximal mögliche Größe gedehnt wird, ohne überzulaufen oder das Bild verzerrt.
Anwenden...
Stile zum Bild.
quelle
Mit dieser Methode können Sie Ihr Div mit dem Bildvariationsverhältnis von Divs und Bildern füllen.
jQuery:
HTML:
CSS:
quelle
Das hat den Trick für mich getan
quelle
Wenn Sie mit IMG-Tags arbeiten, ist dies einfach.
Ich habe das gemacht:
aber ich habe nicht gefunden, wie es mit #pic funktionieren soll {background: url (img / menu.png)} Enyone? Vielen Dank
quelle
Ich hatte ein ähnliches Problem. Ich habe es nur mit CSS gelöst .
Grundsätzlich
Object-fit: cover
hilft es Ihnen, das Seitenverhältnis beizubehalten, während Sie ein Bild innerhalb eines Div positionieren.Das Problem
Object-fit: cover
funktionierte jedoch nicht im IE und es wurde 100% Breite und 100% Höhe benötigt, und das Seitenverhältnis war verzerrt. Mit anderen Worten, der Bildzoom-Effekt war nicht vorhanden, was ich in Chrom sah.Der Ansatz, den ich gewählt habe, bestand darin, das Bild mit Absolut im Container zu positionieren und es dann mit der Kombination genau in der Mitte zu platzieren :
Sobald es in der Mitte ist, gebe ich dem Bild,
Dadurch erhält das Bild den Effekt von Object-Fit: Cover.
Hier ist eine Demonstration der obigen Logik.
https://jsfiddle.net/furqan_694/s3xLe1gp/
Diese Logik funktioniert in allen Browsern.
quelle
HTML:
JSFiddle
... und wenn Sie das Bild einstellen oder ändern möchten (am Beispiel von #foo):
jQuery:
JavaScript:
quelle
Viele der hier gefundenen Lösungen weisen einige Einschränkungen auf: Einige funktionieren nicht im IE (Objektanpassung) oder in älteren Browsern, andere Lösungen skalieren die Bilder nicht (verkleinern sie nur), viele Lösungen unterstützen keine Größenänderung des Fensters und viele sind es nicht generisch, entweder feste Auflösung oder Layout (Hoch- oder Querformat) erwarten
Wenn die Verwendung von Javascript und JQuery kein Problem ist, habe ich diese Lösung basierend auf dem Code von @Tatu Ulmanen. Ich habe einige Probleme behoben und Code hinzugefügt, falls das Bild dinamisch geladen wird und zu Beginn nicht verfügbar ist. Grundsätzlich besteht die Idee darin, zwei verschiedene CSS-Regeln zu haben und diese bei Bedarf anzuwenden: eine, wenn die Begrenzung die Höhe ist, also müssen wir schwarze Balken an den Seiten anzeigen, und die CSS-Regel, wenn die Begrenzung die Breite ist, also müssen wir oben / unten schwarze Balken anzeigen.
Für ein HTML-Element wie:
quelle