Vertikal reagierendes Bild

8

Ich frage mich, ob es eine einfache Möglichkeit gibt, ein reaktionsfähiges Bild vertikal zu zentrieren.

Bitte beachten Sie die folgende jsFiddle: Ссылка

Einfaches HTML:

%Vor%

Grundlegende CSS:

%Vor%

}

Dies ist die mobile Kopfzeile, die dasselbe Bild verwendet, das in den Tablet- und Desktop-Ansichtsfenstern angezeigt wird. Da das Bild sowieso schon geladen wird, versuche ich, dasselbe Bild zu verwenden, es kleiner zu skalieren und es vertikal auszurichten, so dass ich ein Bild für alle Ansichtsfenster verwenden kann.

Das Problem: Bei der Browser-Größenanpassung wird das Bild zwar kleiner, aber es wird nicht vertikal in der Mitte ausgerichtet.

Das Ziel: Obwohl sich die Breite in diesem Beispiel stark überschneidet, ist dies kein Problem auf meiner Website. Das Ziel ist nur, das Bild vertikal zu zentrieren, wenn der Browser seine Größe ändert.

Ich bin in Ordnung mit einer Javascript / jQuery-Lösung, aber natürlich wird einfaches CSS bevorzugt.

Jede Hilfe wird sehr geschätzt!

    
Raphael Rafatpanah 15.03.2013, 22:40
quelle

4 Antworten

23

Es gibt mehrere Möglichkeiten, dies zu tun - rein CSS oder eine JS-basierte Methode.

Aktualisierte Antwort

Update: Mit dem Aufkommen der CSS-Transformations-Unterstützung, ist hier eine ziemlich elegante Lösung von Positionierungselementen mit reinem CSS. Mit dem angegebenen Markup:

%Vor%

Für Ihr CSS:

%Vor%

JSFiddle aktualisiert

Alte Antwort

Für CSS können Sie ein Ghost-Element im Container des Elements <img> erstellen. Chris Coyier hat eine exzellente Kritik an dieser Technik geschrieben. Nehmen wir an, Ihr HTML-Code sieht folgendermaßen aus:

%Vor%

Dann wäre Ihr CSS:

%Vor%

Der funktionierende CSS-Fix funktioniert in dieser Geige - Ссылка

Oder Sie können eine JS-basierte Methode verwenden:

%Vor%

Aber Sie müssen das folgende CSS verwenden:

%Vor%

[Edit]: Für die JS-basierte Methode, bei der Sie das Bildelement absolut positionieren, müssen Sie explizit die Dimensionen des .container -Elements angeben oder etwas Inhalt darin haben (aber es verhindert den Zweck weil das Bild über dem Inhalt sein wird). Dies liegt daran, dass das Bildelement aus dem Dokumentfluss entfernt wurde und seine Abmessungen daher die Größe des übergeordneten Containers nicht beeinflussen.

Das Arbeitsbeispiel der JS-Version ist hier - Ссылка

    
Terry 15.03.2013, 23:04
quelle
2

Die Lösung, die Sie haben, funktioniert für alte Browser, aber in naher Zukunft (jetzt hat ungefähr 80% der Browser-Unterstützung) können Sie dies tun, eine viel einfachere und elegante Lösung:

%Vor%     
Vandervals 08.05.2015 16:45
quelle
0

Also habe ich etwas gefunden, das genau so funktioniert, wie ich es wollte: Ссылка

Das Problem ist, dass es nur mit der neuesten Version von Bootstrap 2.3.1 funktioniert und ich habe keine Ahnung warum (ich habe 2.3.0 auf meiner Seite).

Nun habe ich meine Frage beantwortet und eine noch größere Frage aufgeworfen: Was bewirkt, dass das funktioniert?

Beachten Sie, dass der folgende Code verwendet wird:

HTML

%Vor%

CSS

%Vor%

HINWEIS: Dies funktioniert NICHT ohne die neueste Version 2.3.1 von Bootstrap.

Ich werde eine Frage stellen, um zu sehen, ob jemand weiß!

    
Raphael Rafatpanah 16.03.2013 01:30
quelle
0

Sie sollten diesen Code unten verwenden. Es funktioniert für mich: D
Siehe JSFiddle Ссылка

%Vor%

HTML

%Vor%

CSS

%Vor%     
Renan Coelho 13.03.2015 19:18
quelle