Ich habe den folgenden Code, der einen Container mit einer Höhe einrichtet, die sich mit der Breite ändert, wenn der Browser die Größe ändert (um ein quadratisches Seitenverhältnis beizubehalten).
HTML
<div class="responsive-container">
<div class="dummy"></div>
<div class="img-container">
<IMG HERE>
</div>
</div>
CSS
.responsive-container {
position: relative;
width: 100%;
border: 1px solid black;
}
.dummy {
padding-top: 100%; /* forces 1:1 aspect ratio */
}
.img-container {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
Wie kann ich den IMG im Container vertikal ausrichten? Alle meine Bilder haben variable Höhen und der Container kann keine feste Höhe / Linienhöhe haben, da er reagiert ... Bitte helfen Sie!
html
css
responsive-design
vertical-alignment
user1794295
quelle
quelle
Antworten:
Hier ist eine Technik zum gleichzeitigen horizontalen und vertikalen Ausrichten von Inline-Elementen innerhalb eines übergeordneten Elements :
Vertikale Ausrichtung
1) Bei diesem Ansatz erstellen wir ein
inline-block
(Pseudo-) Element als erstes (oder letztes) Kind des Elternteils und setzen seineheight
Eigenschaft so, dass100%
es die gesamte Höhe seines Elternteils annimmt .2) Beim Hinzufügen
vertical-align: middle
bleiben die Inline-Elemente (-block) in der Mitte des Zeilenbereichs. Also fügen wir diese CSS-Deklaration sowohl dem ersten Kind als auch unserem Element (dem Bild ) hinzu.3) Um das Leerzeichen zwischen Inline- Elementen (-block) zu entfernen , können Sie die Schriftgröße des übergeordneten Elements auf Null setzen
font-size: 0;
.Hinweis: Ich habe im Folgenden die Bildersetzungstechnik von Nicolas Gallagher verwendet .
Was sind die Vorteile?
Die Abmessungen des Bildelements müssen nicht explizit angegeben werden.
Mit diesem Ansatz können wir ein
<div>
Element auch vertikal ausrichten . die einen dynamischen Inhalt haben können (Höhe und / oder Breite). Beachten Sie jedoch, dass Sie diefont-size
Eigenschaft von neu festlegen müssendiv
, um den Innentext anzuzeigen. Online-Demo .Die Ausgabe
Responsive Container
In diesem Abschnitt wird die Frage nicht beantwortet, da das OP bereits weiß, wie ein reaktionsfähiger Container erstellt wird. Ich werde jedoch erklären, wie es funktioniert.
Um die Höhe eines Containerelements mit seiner Breite zu ändern (unter Berücksichtigung des Seitenverhältnisses), können wir einen Prozentwert für die
padding
Eigenschaft top / bottom verwenden .Ein Prozentwert für die obere / untere Polsterung oder die Ränder ist relativ zur Breite des enthaltenen Blocks.
Zum Beispiel:
Hier ist die Online-Demo . Kommentieren Sie die Linien von unten aus und ändern Sie die Größe des Bedienfelds, um den Effekt zu sehen.
Wir könnten die
padding
Eigenschaft auch auf ein Dummy- Kind oder:before
/:after
Pseudo-Element anwenden , um das gleiche Ergebnis zu erzielen. Aber zur Kenntnis , dass in diesem Fall auf den Prozentwertpadding
ist auf die relative Breite der.responsive-container
selbst.Demo # 1 .
Demo # 2 (Verwenden von
:after
Pseudoelementen)Hinzufügen des Inhalts
Die Verwendung von
padding-top
Eigenschaften führt zu einem großen Platz am oberen oder unteren Rand des Inhalts im Container .Um dies zu beheben, haben wir den Inhalt von einem Hüllenelement wickeln, das Element aus dem Dokument normalen Fluss entfernen durch Verwendung absolute Positionierung , und erweitert schließlich die Umhüllung (bu verwenden
top
,right
,bottom
undleft
Eigenschaften) , um den gesamten Raum der Mutter zu füllen, der Behälter .Auf geht's:
Hier ist die Online-Demo .
Alles zusammen bekommen
Hier ist die ARBEITSDEMO .
Natürlich können Sie die Verwendung von
::before
Pseudoelementen aus Gründen der Browserkompatibilität vermeiden und ein Element als erstes untergeordnetes Element erstellen von.img-container
:AKTUALISIERTE DEMO .
Mit
max-*
EigenschaftenUm das Bild in der Box in geringerer Breite zu halten, können Sie Folgendes für das Bild festlegen
max-height
und festlegenmax-width
:Hier ist die AKTUALISIERTE DEMO .
quelle
font-size: 0;
!Mit der Flexbox ist das ganz einfach:
GEIGE
Fügen Sie dem Bildcontainer einfach Folgendes hinzu:
quelle
-webkit-
Präfix, oder versuchen Sie eine Bibliothek wie prefixfree.js :)Verwenden Sie dieses CSS, da Sie bereits das Markup dafür haben:
Hier ist ein funktionierender JsBin: http://jsbin.com/ihilUnI/1/edit
Diese Lösung funktioniert nur für quadratische Bilder (da ein prozentualer Rand-Spitzenwert von der Breite des Containers und nicht von der Höhe abhängt). Für Bilder mit zufälliger Größe können Sie Folgendes tun:
Funktionierende JsBin-Lösung: http://jsbin.com/ihilUnI/2/edit
quelle
Sie können ein Bild sowohl horizontal als auch vertikal mithilfe der
margin: auto
absoluten Positionierung zentrieren. Ebenfalls:quelle
Probier diese
quelle
.img-container
absolut positioniert ist - dies ist notwendig, um das quadratische Seitenverhältnis / die dynamische Höhe beizubehalten.Hier ist eine Technik, mit der Sie JEDEN Inhalt sowohl vertikal als auch horizontal zentrieren können!
Grundsätzlich benötigen Sie nur zwei Container und stellen sicher, dass Ihre Elemente die folgenden Kriterien erfüllen.
Der Außenbehälter:
display: table;
Der innere Behälter:
display: table-cell;
vertical-align: middle;
text-align: center;
Das Inhaltsfeld:
display: inline-block;
Wenn Sie diese Technik verwenden, fügen Sie einfach Ihr Bild (zusammen mit allen anderen Inhalten, die Sie dazu verwenden möchten) zum Inhaltsfeld hinzu.
Demo:
Siehe auch diese Geige !
quelle
Ich bin auf diesen Thread gestoßen, als ich nach einer Lösung gesucht habe, die:
Beim Testen einiger der oben genannten Lösungen habe ich keine gefunden, die alle diese Kriterien erfüllt. Deshalb habe ich diese einfache zusammengestellt, die für andere Personen nützlich sein könnte, die dasselbe tun müssen:
Arbeitsbeispiel für JSFiddle
quelle
Versuchen
Html
CSS
quelle
HTML Quelltext
<div class="image-container"> <img src=""/> </div>
CSS-Code
quelle
Machen Sie ein weiteres Div und fügen Sie sowohl 'Dummy' als auch 'Img-Container' in das Div ein
Führen Sie HTML und CSS wie folgt aus
Anstelle von 100% für den 'Responsive-Container' können Sie die gewünschte Höhe angeben.
quelle