Bei einem beliebigen Bild möchte ich ein Quadrat aus der Bildmitte zuschneiden und innerhalb eines bestimmten Quadrats anzeigen.
Diese Frage ähnelt der folgenden: CSS-Anzeige eines Bilds , dessen Größe geändert und zugeschnitten wurde , aber ich kenne die Größe des Bildes nicht, sodass ich keine festgelegten Ränder verwenden kann.
Antworten:
Eine Lösung besteht darin, ein Hintergrundbild zu verwenden, das in einem Element zentriert ist, das auf die zugeschnittenen Abmessungen zugeschnitten ist.
Grundlegendes Beispiel
Beispiel mit
img
TagDiese Version behält das
img
Tag bei, damit wir nicht die Möglichkeit verlieren, das Bild per Drag oder Rechtsklick zu speichern. Dank an Parker Bennett für den Deckkrafttrick.object-fit
/.-position
Siehe unterstützte Browser .
Die CSS3-Bildspezifikation definiert die
object-fit
undobject-position
Eigenschaften, die zusammen eine bessere Kontrolle über den Maßstab und die Position des Bildinhalts einesimg
Elements ermöglichen. Mit diesen wird es möglich sein, den gewünschten Effekt zu erzielen:quelle
background-size: cover;
, um das Bild zu verkleinern oder das Div entsprechend zu füllen, während das ursprüngliche Seitenverhältnis beibehalten wird.img
diealt
Ameisenattributetitle
für Ihre SEO verloren gehen.object-fit: cover;
direkt auf dem img-tag verwenden, was sich etwas semantischer anfühlt.Ich suchte nach einer reinen CSS-Lösung mit
img
Tags (nicht im Hintergrundbild).Ich habe diesen brillanten Weg gefunden, um das Ziel bei Crop Thumbnails mit CSS zu erreichen :
Es ähnelt der Antwort von @Nathan Redblur, ermöglicht aber auch Porträtbilder.
Funktioniert wie ein Zauber für mich. Das einzige, was Sie über das Bild wissen müssen, ist, ob es sich um ein Hoch- oder Querformat handelt, um die
.portrait
Klasse festzulegen. Daher musste ich für diesen Teil etwas Javascript verwenden.quelle
Versuchen Sie Folgendes: Legen Sie die Abmessungen Ihres Bildausschnitts fest und verwenden Sie diese Linie in Ihrem CSS:
quelle
Beispiel mit
img
Tag aber ohnebackground-image
Diese Lösung behält das
img
Tag bei, damit wir nicht die Möglichkeit verlieren, das Bild per Drag & Rechts zu speichern, sondernbackground-image
nur mit CSS zu zentrieren und zuzuschneiden.Behalten Sie das Seitenverhältnis bei, außer bei sehr hohen Bildern. (Überprüfen Sie den Link)
(Ansicht in Aktion)
Markup
CSS
quelle
Ich habe eine AngularJS-Direktive mit den Antworten von @ Russ und @ Alex erstellt
Könnte 2014 und darüber hinaus interessant sein: P.
html
js
Geigenlink
quelle
Versuche dies:
Beachten Sie, dass
width
undheight
wird nur funktionieren , wenn Ihr DOM - Element Layout hat (ein Block angezeigt Element, wie eindiv
oderimg
). Wenn dies nicht der Fall ist (z. B. eine Spanne), fügen Siedisplay: block;
die CSS-Regeln hinzu. Wenn Sie keinen Zugriff auf die CSS-Dateien haben, fügen Sie die Stile inline in das Element ein.quelle
Es gibt eine andere Möglichkeit, das Bild zentriert zuzuschneiden:
Das einzige, was Sie benötigen, ist das Hinzufügen der Klasse "vertikal" zu vertikalen Bildern. Sie können dies mit diesem Code tun:
Hinweis: "! Important" wird verwendet, um mögliche Attribute für Breite und Höhe des img-Tags zu überschreiben.
quelle