2016-04-09 6 views
0

Ich möchte ein Vollbild vertikal zentrieren. Ich kann kein Bild in CSS definieren, da das Bild von URL-Parametern abhängt.Vollbild vertikal zentrieren

<div> 
    <img src="photo.jpg"> 
</div> 

div { 
    position: fixed; 
    top: 0; 
    left: 0; 
    width: 100%; 
    height: 100%; 
} 

Wenn ich mein Bild CSS wie folgt definieren:

div img { 
    width: 100%; 
    height: 100%; 
} 

Mein Bild wird strecken und in Höhe verformt werden auf dem Bildschirm zu passen.

Wenn ich mein Bild CSS wie folgt definieren (nur ohne Höhe definieren):

div img { 
    width: 100%; 
} 

Mein Bild wird nicht dehnen/verformt werden, aber es wird bei top: 0 des Bildes beginnen. Was ich will ist, dass das Bild vertikal zentriert wird und der Überlauf seiner Höhe versteckt wird.

Grundsätzlich mag ich das gleiche Verhalten, das ich in CSS mit Hintergrund zentrierte bekommen würde:

background: url(photo.jpg) no-repeat center; 
background-size: cover; 

EDIT: Ich habe vergessen, dass die CSS object-fit: cover Werke zu erwähnen, aber ich bin auf der Suche nach einem grenzüberschreit Browser-Lösung, da diese Eigenschaft nicht in jedem Browser funktioniert.

Antwort

1

Versuchen Sie, diese css

div { 
    position: fixed; 
    top: 50%; 
    left: 0; 
    width: 100%; 
    height: 100%; 
    -webkit-transform: translateY(-50%); 
    transform: translateY(-50%); 
} 

EDIT

auch seine schlechte Praxis das Bild um die Höhe und die Breite zu geben. Dies überschreibt immer das Seitenverhältnis des Bildes und dehnt es in eine Richtung.

Verwendung für diese img

div img { 
    width: 100%;  
} 

Dies wird zunächst die Form oben Division 50% positionieren. dh das Bild wird nun seine oberste Teil an 50% der Seitenhöhe dann die translate Eigenschaft wird das Bild nach oben durch 50% seiner Höhe im Wesentlichen Zentrieren des Bildes

+0

Dank Rohit, aber es hat für mich nicht in Chrom v49 arbeiten. –

+0

können Sie bitte einen Screenshot teilen? vielleicht host es auf imgur und füge einen link hier –

+0

können Sie überprüfen, meine bearbeitete Post –

0

Wie wäre es damit bewegen:

div { 
 
    position:fixed; 
 
    top:0; 
 
    left:0; 
 
    width: 100px; 
 
    height: 100px; 
 
    border:1px solid red; 
 
    text-align:center; 
 
    line-height:100px; 
 
    overflow:hidden; 
 
} 
 

 
img { 
 
    vertical-align:middle; 
 
    border:1px solid black; 
 
}
<div> 
 
    <img src="https://www.smallbusinesssaturdayuk.com/Images/Small-Business-Saturday-UK-Google-Plus.gif"> 
 
</div>

+0

Danke Scott, aber es funktioniert nicht. Ihr Bild ist kleiner als das div, aber wenn Sie das Bild in Ihrem Beispiel auf "height: 200px;" und "width: 200px" setzen, werden Sie sehen. –

0

Wenn Sie js zulassen, können Sie dies tun (das Bild unter der Annahme hat id 'img'):

#img { 
    width: 100%; 
    position: absolute; 
    top: 50%; 
} 

Eine negative Marge oben muss js oder jQuery (auf Resize) unter Verwendung gesetzt werden:

$('#img').css('margin-top', '-'+($('#img').height()/2)+'px'); 
+0

Sie müssten den oberen Bereich auf 50% minus die halbe Höhe des Bildes einstellen. –

+0

Genau das passiert hier ... :-) – JoostS

+0

Danke @JoostS. Mit JQuery kann ich sogar background-image einstellen und habe eine einfachere Lösung in CSS mit 'background-position: center' und' background-size: cover'. Aber wenn ich dort mit Nein-JS komme, wird es besser. –