Wie zentriere ich ein (Hintergrund-) Bild innerhalb eines Div?


136

Ist es möglich, ein Hintergrundbild in einem Div zu zentrieren? Ich habe so ziemlich alles versucht - aber keinen Erfolg:

<div id="doit">
  Lorem Ipsum ...
</div>

//CSS
#doit { background-image: url(images/pic.png); background-repeat: none; text-align: center; }

Ist das möglich?

Antworten:


279
#doit {
    background: url(url) no-repeat center;
}

25
Vielen Dank. Das spezifische CSS für die Zentrierung lautet "Hintergrundposition: Mitte".
pmont

@Green: Siehe meine Antwort für Sprite-Hintergrundbilder.
Clayton

3
Wenn Sie möchten, dass das gesamte Bild mit dem Bild gefüllt wird und kein zusätzlicher Platz vorhanden ist, sollten Sie es verwenden. background-size: cover; Wenn Sie möchten, dass das gesamte Bild background-size: contain;
angezeigt wird

80

Versuchen background-position:center;

BEARBEITEN: Da diese Frage viele Aufrufe erhält, lohnt es sich, einige zusätzliche Informationen hinzuzufügen:

text-align: center funktioniert nicht, da das Hintergrundbild nicht Teil des Dokuments und daher nicht Teil des Flusses ist.

background-position:centerist eine Abkürzung für background-position: center center; ( background-position: horizontal vertical);


Eigentlich brauchen Sie nurbackground-position:center;
Dave Sag

Die ausgewählte Antwort führt dazu, dass mein gesamter Hintergrund aus irgendeinem Grund verschwindet (um fair zu sein, mache ich einige Abfragen, die dies verursachen könnten?), Aber diese Antwort funktioniert. Upvote.
Bwoogie

15

Hintergrundposition verwenden:

background-position: 50% 50%;

1
nützlich, wenn Sie das Bild horizontal zentriert, aber vertikal oben benötigen: Hintergrundposition: 50% 0%;
Sébastien Gicquel

50% 0 ist kürzer als ;-) In CSS benötigen Sie keine Einheit, wenn der Wert 0 ist
Kapsel

8

Zum Zentrieren oder Positionieren des Hintergrundbilds sollten Sie die background-positionEigenschaft verwenden. Die Eigenschaft Hintergrundposition legt die Startposition eines Hintergrundbilds von topund an den leftSeiten des Elements fest. Die CSS-Syntax lautet background-position : xvalue yvalue;.

Von "xvalue" und "yvalue" unterstützte Werte sind Längeneinheiten wie pxund Prozent- und Richtungsnamen wie left, right und etc.

Der "x-Wert" ist die horizontale Position des Hintergrunds und beginnt oben am Element. Wenn Sie es verwenden, ist 50pxes "50px" von der Oberseite der Elemente entfernt. Und "yvalue" ist die vertikale Position, die den gleichen Zustand hat.

Wenn Sie also background-position: center;Ihr Hintergrundbild verwenden, wird es zentriert.

Aber ich benutze immer diesen Code:

.yourclass {
  background: url(image.png) no-repeat center /cover;
 }

Ich weiß, dass es so verwirrend ist, aber es bedeutet:

.yourclass {
  background-image: url(image.png);
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
}

Und ich weiß, dass auch das background-sizeeine neue Eigenschaft ist und im komprimierten Code, was /coveraber diese Codes sind, bedeutet fillHintergrundgröße und Positionierung im Windows-Desktop-Hintergrund.

Sie können weitere Details sehen background-positionin hier und background-sizein hier .


7

Wenn es sich bei Ihrem Hintergrundbild um ein vertikal ausgerichtetes Sprite-Blatt handelt, können Sie jedes Sprite wie folgt horizontal zentrieren:

#doit {
    background-image: url('images/pic.png'); 
    background-repeat: none;
    background-position: 50% [y position of sprite];
}

Wenn Ihr Hintergrundbild ein horizontal ausgerichtetes Sprite-Blatt ist, können Sie jedes Sprite wie folgt vertikal zentrieren:

#doit {
    background-image: url('images/pic.png'); 
    background-repeat: none;
    background-position: [x position of sprite] 50%;
}

Wenn Ihr Sprite-Blatt kompakt ist oder Sie nicht versuchen, Ihr Hintergrundbild in einem der oben genannten Szenarien zu zentrieren, gelten diese Lösungen nicht.


5

Das funktioniert bei mir:

#doit{
    background-image: url('images/pic.png');
    background-repeat: no-repeat;
    background-position: center;  
}  

3

Das funktioniert bei mir:

.network-connections-icon {
  background-image: url(url);
  background-size: 100%;
  width: 56px;
  height: 56px;
  margin: 0 auto;
}

1
margin: 0 auto;wo automacht es horizontal innerhalb der div zentrieren. Danke dir!
Oyalhi

1

Das funktioniert bei mir:

<style>
   .WidgetBody
        {   
            background: #F0F0F0;
            background-image:url('images/mini-loader.gif');
            background-position: 50% 50%;            
            background-repeat:no-repeat;            
        }
</style>        
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.