Ich habe eine Site mit vielen Seiten und verschiedenen Hintergrundbildern und zeige sie über CSS wie folgt an:
body.page-8 {
background: url("../img/pic.jpg") no-repeat scroll center top #000;
background-size: cover;
}
Ich möchte jedoch verschiedene (Vollbild-) Bilder auf einer Seite mithilfe von <img>
Elementen anzeigen und möchte, dass sie dieselben Eigenschaften wie die oben genannte background-image: cover;
Eigenschaft haben (die Bilder können nicht über CSS angezeigt werden, sie müssen aus dem HTML-Dokument angezeigt werden).
Normalerweise benutze ich:
div.mydiv img {
width: 100%;
}
Oder:
div.mydiv img {
width: auto;
}
um das Bild voll und reaktionsschnell zu machen. Das Bild schrumpft jedoch zu stark ( width: 100%
), wenn der Bildschirm zu schmal wird, und zeigt die Hintergrundfarbe des Körpers im unteren Bildschirm. Bei der anderen Methode width: auto;
wird das Bild nur in voller Größe angezeigt und reagiert nicht auf die Bildschirmgröße.
Gibt es eine Möglichkeit, das Bild genauso anzuzeigen wie dies der Fall background-size: cover
ist?
Antworten:
Lösung 1 - Die Objektanpassungseigenschaft ( fehlende IE-Unterstützung )
Einfach
object-fit: cover;
auf das Bild setzen.Siehe MDN - bezüglich
object-fit: cover
:Siehe auch diese Codepen-Demo, in der die
object-fit: cover
Anwendung auf ein Bild mit derbackground-size: cover
Anwendung auf ein Hintergrundbild verglichen wirdLösung 2 - Ersetzen Sie das Bild durch ein Hintergrundbild durch CSS
quelle
Es gibt tatsächlich eine recht einfache CSS-Lösung, die sogar unter IE8 funktioniert:
quelle
Angenommen, Sie können ein Containerelement einrichten, das Sie füllen möchten, scheint dies zu funktionieren, fühlt sich jedoch etwas hackisch an. Im Wesentlichen verwende ich nur
min/max-width/height
eine größere Fläche und skaliere diese Fläche dann auf die ursprünglichen Abmessungen zurück.quelle
Ich habe eine einfache Lösung gefunden, um sowohl Cover als auch Contain zu emulieren, die reines CSS ist, für Container mit dynamischen Abmessungen funktioniert und auch das Bildverhältnis nicht einschränkt.
Beachten Sie, dass Sie die Objektanpassung besser verwenden sollten, wenn Sie IE oder Edge vor 16 nicht unterstützen müssen.
Hintergrundgröße: Abdeckung
Die 1000% werden hier verwendet, wenn die natürliche Bildgröße größer ist als die Größe, die angezeigt wird. Beispiel: Wenn das Bild 500 x 500 ist, der Container jedoch nur 200 x 200. Mit dieser Lösung wird die Bildgröße auf 2000 x 2000 (aufgrund der Mindestbreite / Mindesthöhe) geändert und dann auf 200 x 200 (aufgrund von) verkleinert
transform: scale(0.1)
.Der x10-Faktor kann durch x100 oder x1000 ersetzt werden, aber es ist normalerweise nicht ideal, wenn ein 2000x2000-Bild auf einem 20x20-Div gerendert wird. :) :)
Hintergrundgröße: enthalten
Nach dem gleichen Prinzip können Sie damit auch Folgendes emulieren
background-size: contain
:quelle
transform
für viele der AntwortenNein , Sie können es nicht ganz so bekommen,
background-size:cover
aber ..Dieser Ansatz ist ziemlich nah dran: Er verwendet JavaScript, um festzustellen, ob das Bild Quer- oder Hochformat ist, und wendet Stile entsprechend an.
JS
CSS
http://jsfiddle.net/b3PbT/
quelle
Ich musste emulieren
background-size: contain
, konnte es aberobject-fit
aufgrund mangelnder Unterstützung nicht verwenden . Meine Bilder hatten Container mit definierten Abmessungen und dies funktionierte für mich:quelle
min-height: 100%; max-height:100%;
Hintergrundgröße verwenden und gleichwertig erhalten: cover;min-height: 100%; max-height:100%;
würde das Seitenverhältnis nicht beibehalten, also nicht genau gleichwertig.Versuchen Sie , beide
min-height
undmin-width
, mitdisplay:block
:( Geige )
Vorausgesetzt, das Element , das Ihr Bild enthält, ist
position:relative
oderposition:absolute
, deckt das Bild den Container ab. Es wird jedoch nicht zentriert.Sie können das Bild leicht zentrieren, wenn Sie wissen, ob es horizontal (Set
margin-left:-50%
) oder vertikal (Setmargin-top:-50%
) überläuft . Es kann möglich sein, CSS-Medienabfragen (und etwas Mathematik) zu verwenden, um dies herauszufinden.quelle
Mit CSS können Sie simulieren
object-fit: [cover|contain];
. Es ist Gebrauchtransform
und[max|min]-[width|height]
. Es ist nicht perfekt. Das funktioniert in einem Fall nicht: Wenn das Bild breiter und kürzer als der Container ist.quelle
Sie können das Attribut 'style' verwenden, um das Hintergrundbild zum Element hinzuzufügen. Auf diese Weise rufen Sie das Bild weiterhin im HTML-Code auf, können jedoch weiterhin die Hintergrundgröße verwenden: cover css behaviour:
HTML:
CSS:
Auf diese Weise füge ich Elementen, die ich dynamisch in HTML laden muss, das Verhalten von Hintergrundgröße: Abdeckung hinzu. Sie können dann fantastische CSS-Klassen wie Hintergrundposition: Mitte verwenden. Boom
quelle
Für IE müssen Sie auch die zweite Zeilenbreite angeben: 100%;
quelle
Ich darf keinen Kommentar hinzufügen, um dies zu tun, aber ja, was Eru Penkman getan hat, ist ziemlich genau richtig, um es wie eine Hintergrundabdeckung zu bekommen. Alles, was Sie tun müssen, ist sich zu ändern
ZU
quelle
Ich weiß, dass dies alt ist, aber viele Lösungen, die ich oben sehe, haben ein Problem damit, dass das Bild / Video zu groß für den Container ist und sich nicht wie eine Abdeckung in Hintergrundgröße verhält. Ich habe mich jedoch entschlossen, "Utility-Klassen" zu erstellen, damit dies für Bilder und Videos funktioniert. Sie geben dem Container einfach die Klasse .media-cover-wrapper und dem Medienelement selbst die Klasse .media-cover
Dann haben Sie folgende jQuery:
Achten Sie beim Aufrufen auf die Größenänderung der Seite:
Dann das folgende CSS:
Ja, es erfordert möglicherweise jQuery, aber es reagiert recht gut und verhält sich genau wie Hintergrundgröße: Cover und Sie können es für Bilder und / oder Videos verwenden, um diesen zusätzlichen SEO-Wert zu erzielen.
quelle
Wir können den ZOOM-Ansatz verfolgen. Wir können davon ausgehen, dass maximal 30% (oder mehr bis zu 100%) der Zoomeffekt sein können, wenn die Höhe ODER Breite des Seitenbilds kleiner als die gewünschte Höhe ODER Breite ist. Wir können den Rest nicht benötigten Bereich mit Überlauf verstecken: versteckt.
Dadurch werden Bilder mit unterschiedlicher Breite ODER Höhe angepasst.
quelle
traf genau die gleichen Symptome. oben hat für mich gearbeitet.
quelle