2009-11-09 11 views
5

Ich baue einige grundlegende HTML-Code für ein CMS. Eine der seitenbezogenen Optionen im CMS ist "Hintergrundbild" und "Seitenbreite/-höhe auf Hintergrundbildbreite/-höhe dehnen". so dass mit großen Hintergrundbildern das Ganze sichtbar wird.Firefox Hintergrundbild horizontale Zentrierung Kuriosität

Meine aktuelle Bildschirmauflösung beträgt 1280 x 1024.

Wenn ich Folgendes tun:

  • Geben Sie ein Hintergrundbild, das 1400px breit ist
  • "Position" Geben Sie als "mitte" (horiz./vert.)
  • angeben "Stretch Seitenbreite Hintergrund Bildbreite"

th en in FF passiert folgendes:

  • Die Seite ist korrekt auf 1400px gestreckt. Ich bekomme eine horizontale Bildlaufleiste, da mein Bildschirm kleiner ist. So weit, ist es gut.
  • und jetzt das seltsame Ding: das Hintergrundbild ist nicht zentriert relativ zu den 1400px, so dass das volle Bild, aber relativ zu meinem Viewport von 1280px, einen Teil des Bildes über den linken Rand des Bildschirms versteckt und lassen Sie einen weißen Streifen auf der rechten Seite, anstatt das ganze Bild zu zeigen.
  • Es gibt keine zusätzlichen Elemente (DIVs, Wrapper ...), die alles manipulieren könnten. Alle Einstellungen sind direkt im Körper.

Update: IE tut es richtig. Google Chrome hat das gleiche Problem.

Es ist, als ob Firefox zuerst das Hintergrundbild mit 100% Breite rendert, es zentriert und dann bemerkt, dass der Körper auf 1400px gestreckt werden muss.

Ist das normales Verhalten von Firefox? Irgendwelche Ideen, was ich tun kann?

Einen Link zu veröffentlichen wäre ein wenig umständlich, da es alles in einer geschlossenen Entwicklungsumgebung ist, aber wenn alles andere fehlschlägt, werde ich etwas zusammenstellen, um es anzuschauen.

Die CSS:

body 
{ 
background-image: url(http://www.domain.com....image.jpg); 
background-repeat: no-repeat; 
background-position: center center; 
min-width: 1400px; 
height: 100%; 
} 

Antwort

3

Sie sind durch eine Marotte der CSS-Spezifikation gebissen : Dank section 14.2 wird jedes Hintergrundbild, das Sie auf das Element body anwenden, zum Hintergrund für html. (Dies war so gedacht, dass Autoren den Hintergrund auf dem Body-Tag weiter verwenden konnten, wo sie erwarteten, dass es von Browsern vor CSS stammt.)

In IE stellt html die gesamte Dokument-Leinwand dar und wird erweitert, um der vergrößerten Körperbreite zu entsprechen. In anderen Browsern verhält es sich wie jedes andere display: block Element und behält die Breite des Darstellungsbereichs bei, unabhängig davon, was Sie darin einfügen. Die anderen Browser sind wohl korrekter hier, aber die CSS-Spezifikation ist nicht sehr klar in Bezug auf das Thema, und das Ergebnis ist, dass die Ergebnisse in IE eher den Wortlaut von 14.2 über die Leinwand darstellen. So oder so, es ist nicht wirklich zuverlässiges Verhalten angegeben.

Sie können konsistente Ergebnisse in allen Browsern erzielen, indem Sie die Breite und den Hintergrund auf html anstelle von body setzen. (Denken Sie daran, den Standardmodus im IE zu verwenden.)

Aber ein 1400px Dokument mit fester Breite? Klingt nach einer wirklich schlechten Idee.

+0

Danke für die hervorragende Information. Wie ich später korrigierte, soll 1400px min-width sein. Werde die HTML-Route ausprobieren. –

0

der Hintergrund-Position links oben werden sollte; haben Sie

body{ 
margin:0; 
padding:0; 
} 
+0

Es sollte lesen "Min-Breite: 1400px", änderte ich das, aber das Problem herrscht. Die Hintergrundposition muss in der Mitte liegen, da der Bildschirm breiter als 1400 px sein kann und das Bild dann positioniert werden muss. –

1

Versuch gesetzt und fügte hinzu:

width: 100%; 
display: table; 

zum body Tag-Stil (auch, background-attachment: fixed; erforderlich sein könnten)

+0

'Anzeige: Tabelle'? Hä? Wenn Sie nicht alle untergeordneten Elemente von body 'display: table-row' und deren untergeordneten' display: table-cell' angeben, würde dies zu völlig undefinierten Ergebnissen führen. – bobince

+0

Anzeige: Tisch klingt in der Tat riskant. Ich werde mit der obigen Antwort gehen. Danke trotzdem. –

+0

eigentlich hatte ich Probleme mit Firefox und großen Hintergrundbildern (die zentriert waren) - wenn Sie Fenster verkleinern, um kleiner dann Inhalt Hintergrund würde nach links verschieben. Hinzufügen von 'display: table; Breite: 100%; 'auf' Körper' gelöst Problem in meinem Fall ... – krcko