2013-03-18 6 views
6

Ich habe ein Element, auf das ich einen Hintergrund anwenden möchte, obwohl ich das Hintergrundbild basierend auf seiner rechten Koordinate positionieren möchte.Gibt es eine Möglichkeit, ein Hintergrundbild relativ zur Mitte eines Elements zu positionieren?

Ich könnte ein Container-Div verwenden, um den Hintergrund darzustellen, obwohl es in dieser Situation nicht wirklich praktisch ist.

Ich habe derzeit die folgende Regel:

.myelem { 
    background-image: url("myelem.png"); 
    background-position: 5% 60%; 
    background-repeat: no-repeat; 
} 

die zum größten Teil wegen der Größe des Bildes arbeitet. Wenn es möglich wäre, hätte ich gerne etwas, das angibt, dass die relative Position des Hintergrunds middle statt left ist.

Antwort

11

Die CSS propoerty background-positioncenter als Wert akzeptiert:

.myelem { 
    background-image: url("myelem.png"); 
    background-position: center center; 
    background-repeat: no-repeat; 
} 

Oder die Kurzversion:

.myelem { 
    background: url("myelem.png") center center no-repeat; 
} 

aktualisiert 1

Es gibt keinen einfachen CSS-Weg ist die festlegen Hintergrund-Position zu einem Offset von Mitte (oder unten oder rechts).

Sie padding das eigentliche Bild hinzufügen könnte, Javascript verwenden, um die Position nach dem Laden der Seite, fügt Marge auf das Element zu berechnen, wie in den folgenden SO Fragen vorgeschlagen:

Alternativ können Sie calc verwenden, um die richtige Position zu berechnen. Obwohl calc is not supported von allen Browsern an dieser Stelle.

Mit Calc Sie so etwas tun könnte:

.myelem { 
    background-image: url("myelem.png"); 
    background-position: 5% 60%; 
    background-position: -webkit-calc(50% - 200px) 60%; 
    background-position: calc(50% - 200px) 60%; 
    background-repeat: no-repeat; 
} 

Demo

+0

Sie auch alles, was in kombinieren könnte {background: url (...) mitte no-repeat}. – isherwood

+0

@ 3dgoo Danke für das Update, ich habe "relativ zu" im Titel meiner Frage angegeben. Leider kann ich CSS nicht verwenden, da ich keinen Zugriff auf die Quelle habe. 'calc' wäre in Ordnung, obwohl ich auch IE 8 und höher unterstützen muss. –

+1

Ich habe Ihre Antwort mit calc und Fallbacks für prozentuale Positionierung akzeptiert, danke. Ich muss beachten, dass 'calc()' erfordert, dass um den Operator herum Leerzeichen vorhanden sind, ansonsten wird es ignoriert (Firefox und Safari getestet). –

Verwandte Themen