Ich weiß, dass es unmöglich ist, ein Bild mit CSS tatsächlich zu ändern, weshalb ich Zuschneiden in Anführungszeichen setze.
Ich möchte rechteckige Bilder aufnehmen und sie mit CSS quadratisch erscheinen lassen, ohne das Bild zu verzerren.
Grundsätzlich möchte ich das umdrehen:
Das mögen:
background-position
oder dem alten Wrapper div mitoverflow:hidden
und Bild mit relativer Positionierung ziemlich einfach .Antworten:
Vorausgesetzt, sie müssen nicht in IMG-Tags enthalten sein ...
HTML:
CSS:
BEARBEITEN: Wenn das div irgendwo verlinken muss, passen Sie einfach HTML und Stile wie folgt an:
HTML:
CSS:
Beachten Sie, dass dies auch geändert werden kann, um zu reagieren, z. B.% Breiten und Höhen usw.
quelle
height: 460px; width: 100%;
und es funktioniert wie ein ZauberEine reine CSS-Lösung ohne Wrapper
div
oder anderen nutzlosen Code:quelle
overflow:hidden
).Beispielsweise:
quelle
Hintergrundgröße verwenden: cover - http://codepen.io/anon/pen/RNyKzB
CSS:
Markup:
quelle
Ich bin kürzlich tatsächlich auf dasselbe Problem gestoßen und habe einen etwas anderen Ansatz gewählt (ich konnte keine Hintergrundbilder verwenden). Es erfordert jedoch ein wenig jQuery, um die Ausrichtung der Bilder zu bestimmen (ich bin sicher, Sie könnten stattdessen stattdessen einfaches JS verwenden).
Ich habe einen Blog-Beitrag darüber geschrieben, wenn Sie an weiteren Erklärungen interessiert sind, der Code jedoch ziemlich einfach ist:
HTML:
CSS:
jQuery:
quelle
$(this).load(function(){...
innerhalb jeder Schleife, sodass jQuery etwas wartet, bis das Bild geladen ist und echte Bildabmessungen erhält.Wenn sich das Bild in einem Container mit einer Antwort befindet Breite befindet:
HTML
CSS
quelle
Ich hatte ein ähnliches Problem und konnte mit Hintergrundbildern keine "Kompromisse eingehen". Ich habe mir das ausgedacht.
Hoffe das hilft!
Beispiel: https://jsfiddle.net/cfbuwxmr/1/
quelle
Verwenden Sie CSS: Überlauf:
quelle
Verwenden Sie entweder ein Div mit quadratischen Abmessungen und dem Bild mit der Klasse .testimg:
oder ein quadratisches Div mit einem Hintergrund des Bildes.
Hier einige Beispiele: http://jsfiddle.net/QqCLC/1/
AKTUALISIERT SO DIE BILDZENTREN
quelle
object-fit: cover
wird genau das tun, was Sie brauchen.Unter IE / Edge funktioniert dies möglicherweise nicht. Befolgen Sie die nachstehenden Anweisungen, um das Problem mit nur CSS zu beheben und mit allen Browsern zu arbeiten .
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.
Original Bild
Vertikal beschnitten
Horizontal beschnitten
quelle