Prendete questo esempio banale e aprirlo:HTML/CSS: perché il corpo non si sta estendendo al suo contenuto?
<html>
<body style="background-image:url(http://upload.wikimedia.org/wikipedia/commons/2/21/Mandel_zoom_00_mandelbrot_set.jpg);background-repeat: no-repeat; background-position: top center;">
<div style="width: 8000px; border: 3px solid red;">Demo</div>
</body>
</html>
La pagina è fatto in modo che il corpo ha una foto in alto centrato sullo sfondo e un elemento di contenimento che trabocca limiti della finestra per cui v'è lo scorrimento orizzontale (se si dispone di un monitora più di 8000px, quindi sei davvero forte, tieni la finestra più piccola e aggiorna).
Il problema è che per qualche motivo lo <body>
non si estende per contenere lo . Rimane solo la stessa larghezza del viewport e lo <div>
lo trabocca. Ciò a sua volta fa sì che lo sfondo sia centrato nel punto sbagliato e lo ritagli alla dimensione del viewport. Abbastanza brutto quando si scorre a destra.
Ho già trovato una soluzione a questo problema, ma mi chiedo PERCHÉ è così? Sembra essere coerente anche tra i browser. Ma a mio parere questo è abbastanza contro-intuitivo e sostanzialmente semplice errato. L'elemento contenitore deve essere abbastanza grande da contenere i suoi figli, a meno che non siano posizionati in modo assoluto, nel qual caso non partecipano ai calcoli del layout.
Ehi. Tornando a questo 2 anni dopo, e sto cercando la stessa soluzione che dici di aver trovato. La risposta di Bobince non aiuta, moltissimo .. (È fluttuante l'unica opzione?) – SoreThumb
Sto ancora utilizzando float. Dateci un'occhiata qui: http://www.drowtales.com –