2017-08-23 4 views
0

Wie kann ich Bild mit css nur innerhalb Elternteil div zentrieren, ohne die Originalgröße zu ändern?Zentrum Bild und behalten die gleiche Höhe

.main-img { 
 
      display: block; 
 
      width: 180px; 
 
      overflow: hidden; 
 
      align-self: flex-start; 
 
     }
<div class="main-img"> 
 
    <img src="http://via.placeholder.com/300x50.png" width="1280px" height="550px" alt="main image" /> 
 
</div>

Antwort

0

Way1: horizontal:

.main-img img { 
    display: block; 
    margin: auto; 
} 

vertikal:

.main-img { 
    height: 180px; 
    display: flex; 
    justify-content: center; 
    align-items: center; 
} 

.main-img img { 
    width: 200px; 
    height: 200px; 
} 

WAY2: horizontal:

.main-img { 
    /* ... other code here such as width and height ... */ 
    position: relative; 
} 
.main-img img { 
    position: relative; 
    left: 50%; 
    transform: translateX(-50%); 
} 

vertikal:

.main-img { 
    /* ... other code here such as width and height ... */ 
    position: relative; 
} 
.main-img img { 
    position: relative; 
    top: 50%; 
    transform: translateY(-50%); 
} 

vertikal und horizontal:

.main-img { 
    /* ... other code here such as width and height ... */ 
    position: relative; 
} 
.main-img img { 
    position: relative; 
    top: 50%; 
    left: 50%; 
    transform: translate(-50%, -50%); 
} 
0

Um horizontal zentriert Ihrem Element sind Sie für margin: 0 auto suchen, wie <div> Elemente sind block-level standardmäßig (und somit müssen Sie nicht wirklich brauchen display: block):

.main-img { 
 
    margin: 0 auto; 
 
    width: 180px; 
 
    overflow: hidden; 
 
    align-self: flex-start; 
 
}
<div class="main-img"> 
 
    <img src="http://via.placeholder.com/300x50.png" width="1280px" height="550px" alt="main image" /> 
 
</div>

Vertikal Zentrierung ist ein wenig komplizierter, und es ist am einfachsten, sowohl horizontale als auch vertikale Zentrierung mit flexbox zu erreichen, die display: flex, align-items: center und justify-content: center Eigenschaftswerte verwendet. Beachten Sie, dass Sie auch eine height Eigenschaft angeben müssen:

.main-img { 
 
    height: 180px; 
 
    border: 1px solid black; 
 
    display: flex; 
 
    align-items: center; 
 
    justify-content: center; 
 
} 
 

 
.main-img img { 
 
    width: 140px; 
 
    height: 140px; 
 
}
<div class="main-img"> 
 
    <img src="http://via.placeholder.com/140x140.png" alt="main image" /> 
 
</div>

hoffe, das hilft! :)

+0

Es war hilfreich, danke. aber warum haben Sie Padding in der vertikalen Version hinzugefügt? und ich habe Breite 480px hinzugefügt. Ich denke, das ganze Problem war mit 'display: block' und add 'justify-content: center' –

+0

Froh, die Antwort zu hören, half Ihnen. Ich habe gerade das "Padding" hinzugefügt, um zu verdeutlichen, dass es sich tatsächlich vertikal zentriert. Wenn ich bedenke, dass ich dem Elternelement keine "Höhe" hinzugefügt habe, wäre es nur auf eine Höhe von 140 px erweitert worden, um das Kind unterzubringen (was die vertikale Zentrierung nicht wirklich zeigen würde). Eigentlich wäre es ein besseres Beispiel gewesen, eine "Höhe" auf dem Elternteil anstatt auf "Auffüllen" zu setzen. Ich habe meine Antwort aktualisiert, um das zu demonstrieren. Wenn diese Antwort Ihr Problem löst, vergessen Sie bitte nicht, [** accept it **] (https://stackoverflow.com/help/someone-answers) zu akzeptieren. –