Ich habe folgendes div
<div id="over" style="position:absolute; width:100%; height:100%>
<img src="img.png">
</div>
Wie kann man das Bild so ausrichten, dass es sich in der Mitte und in der Mitte von div befindet?
Ich habe folgendes div
<div id="over" style="position:absolute; width:100%; height:100%>
<img src="img.png">
</div>
Wie kann man das Bild so ausrichten, dass es sich in der Mitte und in der Mitte von div befindet?
Antworten:
body {
margin: 0;
}
#over img {
margin-left: auto;
margin-right: auto;
display: block;
}
<div id="over" style="position:absolute; width:100%; height:100%">
<img src="http://www.garcard.com/images/garcard_symbol.png">
</div>
display: block;
war meine Falle. TnX
display: block
die Standardeinstellung ist display: inline
gemäß w3schools.com/cssref/pr_class_display.asp . Warum müssen wir Block verwenden? Ich habe für mich gearbeitet, bin mir aber nicht sicher, warum Block das IMG zentriert und Inline nicht.
<div style="display:table-cell; vertical-align:middle; text-align:center">
<img src="img.png">
</div>
Dies kann auch über das Flexbox-Layout erfolgen:
STATISCHE GRÖSSE
.parent {
display: flex;
height: 300px; /* Or whatever */
background-color: #000;
}
.child {
width: 100px; /* Or whatever */
height: 100px; /* Or whatever */
margin: auto; /* Magic! */
}
<div class="parent">
<img class="child" src="https://i.vimeocdn.com/portrait/58832_300x300"/>
</div>
DYNAMISCHE GRÖSSE
html, body {
width: 100%;
height: 100%;
display: flex;
background-color: #999;
}
* {
margin: 0;
padding: 0;
}
.parent {
margin: auto;
background-color: #000;
display: flex;
height: 80%;
width: 80%;
}
.child {
margin: auto; /* Magic! */
max-width: 100%;
max-height: 100%;
}
<div class="parent">
<img class="child" src="https://i.vimeocdn.com/portrait/58832_300x300"/>
</div>
Ich habe das Beispiel in diesem Artikel gefunden , das die Verwendung des Layouts hervorragend erklärt.
Mir scheint, Sie wollten auch, dass das Bild vertikal im Container zentriert wird. (Ich habe keine Antwort dafür gesehen)
HTML
<div id="over">
<span class="Centerer"></span>
<img class="Centered" src="http://th07.deviantart.net/fs71/200H/f/2013/236/d/b/bw_avlonas_a5_beach_isles_wallpaper_image_by_lemnosexplorer-d6jh3i7.jpg" />
</div>
CSS
*
{
padding: 0;
margin: 0;
}
#over
{
position:absolute;
width:100%;
height:100%;
text-align: center; /*handles the horizontal centering*/
}
/*handles the vertical centering*/
.Centerer
{
display: inline-block;
height: 100%;
vertical-align: middle;
}
.Centered
{
display: inline-block;
vertical-align: middle;
}
Hinweis: Mit dieser Lösung können Sie jedes Element innerhalb eines Elements ausrichten. Für IE7 müssen Sie beim Anwenden der .Centered
Klasse auf Blockelemente einen anderen Trick verwenden, um die inline-block
Arbeit zu erledigen . (das, weil IE6 / IE7 nicht gut mit Inline-Block auf Blockelementen spielen)
span
, könnten Sie das Pseudo-Element verwenden :before
: jsfiddle.net/xaliber/cj6zhtp0
#over { position:absolute; width:100%; height:100%;
?
img.centered {
display: block;
margin: auto auto;
}
Sie können dies einfach tun, indem Sie die Eigenschaft display: flex css verwenden
#over {
height: 100%;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
}
#over {position:relative; text-align:center;
width:100%; height:100%; background:#CCC;}
#over img{
position: absolute;
margin: auto;
top: 0;
left: 0;
right: 0;
bottom: 0;
}
Ich hatte noch einige Probleme mit anderen hier vorgestellten Lösungen. Schließlich funktionierte das am besten für mich:
<div class="parent">
<img class="child" src="image.png"/>
</div>
CSS3:
.child {
display: block;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
-webkit-transform: translate(-50%, -50%); /* Safari and Chrome */
-moz-transform: translate(-50%, -50%); /* Firefox */
-ms-transform: translate(-50%, -50%); /* IE 9 */
-o-transform: translate(-50%, -50%); /* Opera */
// I suppose you may like those too:
// max-width: 80%;
// max-height: 80%;
}
Weitere Informationen zu diesem Ansatz finden Sie auf dieser Seite .
Dies wäre ein einfacherer Ansatz
#over > img{
display: block;
margin:0 auto;
}
Daaawx 'Antwort funktioniert, aber ich denke, es wäre sauberer, wenn wir das Inline-CSS eliminieren würden.
body {
margin: 0;
}
#over img {
margin-left: auto;
margin-right: auto;
display: block;
}
div.example {
position: absolute;
width: 100%;
height: 100%;
}
<div class="example" id="over">
<img src="http://www.garcard.com/images/garcard_symbol.png">
</div>
Wenn Sie das Bild so einstellen , dass es angezeigt wird: Inline-Block, während Sie das übergeordnete Div auf Textausrichtung: Mitte eingestellt haben, wird dies ebenfalls erledigt
EDIT: für diejenigen, die mit Display spielen: Inline-Block >>> Vergessen Sie nicht, dass zB zwei Divs mögen
<div>Div1 content</div>NOSPACEHERE<div>Div2 content</div>
habe wirklich keine Leerzeichen zwischen ihnen (wie hier zu sehen).
Nur einfach, um diese (Inline-Block-inhärenten) Lücken zwischen ihnen zu vermeiden. Diese Lücken sind zwischen jeweils zwei Wörtern zu sehen, die ich gerade schreibe! :-) Also .. hoffe das hilft einigen von euch.
EINFACH. 2018. FlexBox. So überprüfen Sie die Browserunterstützung: Kann ich eine
Minimallösung verwenden:
div#over {
display: flex;
justify-content: center;
align-items: center;
}
So erhalten Sie die größtmögliche Browserunterstützung:
div#over {
display: -webkit-flex;
display: -ms-flex;
display: flex;
justify-content: center;
-ms-align-items: center;
align-items: center;
}
Ich habe viele Ansätze ausprobiert, aber nur dieser funktioniert für mehrere Inline-Elemente in einem Container-Div. Hier ist Code, um alles in div in der Mitte auszurichten.
.divContainer
{
vertical-align: middle;
text-align: center; <!-- If you want horizontal center alignment -->
}
.divContainer > *
{
vertical-align: middle;
}
<div class="divContainer">
<span>Middle Text</span>
<img src="test.png"/>
</div>
Beispielcode finden Sie hier: https://jsfiddle.net/yogendrasinh/2vq0c68m/
CSS-Datei
.over {
display : block;
margin : 0px auto;
Versuchen Sie diesen minimalen Code:
<div class="outer">
<img src="image.png"/>
</div>
Und CSS:
.outer{
text-align: center;
}
.outer img{
display: inline-block;
}
Nun, wir sind im Jahr 2016 ... warum nicht Flexbox verwenden? Es reagiert auch. Genießen.
#over{
display:flex;
align-items:center;
justify-content:center;
}
<div id="over">
<img src="http://www.garcard.com/images/garcard_symbol.png">
</div>
Viele Antworten empfehlen die Verwendung, margin:0 auto
aber dies funktioniert nur, wenn das Element, das Sie zentrieren float
möchten, nicht links oder rechts schwebt, dh das CSS-Attribut ist nicht festgelegt. Wenden Sie dazu das display
Attribut an table-cell
und wenden Sie dann den Rand von links und rechts auf auto an, damit Ihr Stil so aussiehtstyle="display:table-cell;margin:0 auto;"
HTML:
<div id="over">
<img src="img.png">
</div>
CSS:
#over {
text-align: center;
}
#over img {
vertical-align: middle;
}
Für horizontale Mitte Einfach setzen
#over img {
display: block;
margin: 0 auto;
clear:both;
}
Eine andere Methode:
#over img {
display: inline-block;
text-align: center;
}
Für die vertikale Mitte Einfach setzen:
#over img {
vertical-align: middle;
}
Das hat den Trick für mich getan.
<div class="CenterImage">
<asp:Image ID="BrandImage" runat="server" />
</div>
'Hinweis: In diesem Fall ist' BrandImage 'keine CSS-Klasse zugeordnet
CSS:
.CenterImage {
position:absolute;
width:100%;
height:100%
}
.CenterImage img {
margin: 0 auto;
display: block;
}
Dies hat bei mir funktioniert, wenn Sie das Bild zentrieren müssen und Ihr übergeordnetes Div zum Bild den gesamten Bildschirm abdeckt. dh Höhe: 100% und Breite: 100%
#img{
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%);
}
Positionierung verwenden. Folgendes hat bei mir funktioniert ...
Mit Zoom in die Bildmitte (Bild füllt das Div):
div{
display:block;
overflow:hidden;
width: 70px;
height: 70px;
position: relative;
}
div img{
min-width: 70px;
min-height: 70px;
max-width: 250%;
max-height: 250%;
top: -50%;
left: -50%;
bottom: -50%;
right: -50%;
position: absolute;
}
Ohne Zoom auf die Mitte des Bildes (Bild ist nicht füllen Sie das div):
div{
display:block;
overflow:hidden;
width: 100px;
height: 100px;
position: relative;
}
div img{
width: 70px;
height: 70px;
top: 50%;
left: 50%;
bottom: 50%;
right: 50%;
position: absolute;
}
Die markierte Antwort darauf richtet das Bild nicht vertikal aus. Eine geeignete Lösung für moderne Browser ist die Flexbox. Ein Flex-Container kann so konfiguriert werden, dass seine Elemente sowohl horizontal als auch vertikal ausgerichtet werden.
<div id="over" style="position:absolute; width:100%; height:100%; display: flex; align-items: center; justify-content: center;">
<img src="img.png">
</div>
Sie können sich diese Lösung ansehen:
Horizontales und vertikales Zentrieren eines Bildes in einer Box
<style type="text/css">
.wraptocenter {
display: table-cell;
text-align: center;
vertical-align: middle;
width: ...;
height: ...;
}
.wraptocenter * {
vertical-align: middle;
}
.wraptocenter {
display: block;
}
.wraptocenter span {
display: inline-block;
height: 100%;
width: 1px;
}
</style>
<!--[if lt IE 8]-->
<style>
.wraptocenter span {
display: inline-block;
height: 100%;
}
</style>
<!--[endif]-->
<div class="wraptocenter"><span></span><img src="..." alt="..."></div>
Eine einfache Möglichkeit wäre, separate Stile sowohl für das div als auch für das Bild zu erstellen und diese dann unabhängig voneinander zu positionieren. Wenn ich meine Bildposition auf 50% setzen möchte, hätte ich Code, der wie folgt aussieht ...
#over{
position:absolute;
width:100%;
height:100%;
}
#img{
position:absolute;
left:50%;
right:50%;
}
<div id="over">
<img src="img.png" id="img">
</div>
Das sollte funktionieren.
WICHTIG FÜR DEN TEST: Um ein Code-Snippet auszuführen, klicken Sie auf die linke Schaltfläche RUN-Code-Snippet und dann auf den rechten Link. Ganze Seite
#fader{
position:fixed;z-index: 10;
top:0;right:0;bottom:0;left:0;
opacity: 0.8;background: black;
width:100%;height:100%;
text-align: center;
}
.faders{display:inline-block;height:100%;vertical-align:middle;}
.faderi{display:inline-block;vertical-align:middle;}
<div id="fader">
<span class="faders"></span>
<img class="faderi" src="https://i.stack.imgur.com/qHF2K.png" />
</div>