2010-09-03 5 views
1

J'ai une mise en page centrée en utilisant margin:0 auto;, mais un de mes divs enfants ne se positionne pas absolument (par rapport à son parent). La page semble bien jusqu'à ce que la fenêtre est redimensionnée. Ensuite, le div enfant est poussé vers la droite et l'image du haut (dans une autre div) est tronquée.Comment puis-je faire une position: absolue; div à l'intérieur d'une position: relative; div travailler dans une mise en page centrée par marge: 0 auto ;?

De quels changements de code ai-je besoin?

Voici le CSS:

body { 
padding: 0; 
margin: 0; 
display: table; 
text-align: center; 
font-family:sans-serif; 
background: #FFF url("/images/businessmanbg.jpg") no-repeat center top; 
width: 100%; 
} 
#wrapper { 
margin: 0 auto; 
position: relative; 
} 
#container { 
margin: 0 auto; 
text-align: left; 
position: relative; 
} 
#topbar { 
background: #036 url("/images/topbar.jpg") no-repeat center top; 
border:0; 
position: relative; 
margin-top: -22px; 
padding:0; 
text-indent:-9999px; 
display: block; 
height: 111px; 
width: 100%; 
} 
#content { 
background: url("/images/copy-bg.png"); 
padding: 10px; 
position: absolute; 
margin-left: 900px; 
margin-top: 50px; 
text-align: left; 
width: 450px; 
} 

Merci pour votre aide!

EDIT (2:18 PM CDT): À la suggestion de quelqu'un d'autre, j'ai déplacé l'arrière-plan de l'homme d'affaires vers #container, ajouté une largeur fixe à #container et ajouté les positions haut et droit à #content. On dirait que le positionnement est correct, mais l'image de fond a disparu. Une idée pourquoi?

L'exemple ci-dessus a été mis à jour avec le CSS suivant (et je supprimé l'emballage DIV dans le HTML):

body { 
    padding: 0; 
    margin: 0; 
    display: table; 
    text-align: center; 
    font-family:sans-serif; 
    width: 100%; 
} 
#container { 
    margin: 0 auto; 
    text-align: left; 
    position: relative; 
    background: url("/images/businessmanbg.jpg") no-repeat center top; 
    width: 1280px; 
    z-index: 1; 
} 
#topbar { 
    background: #036 url("/images/topbar.jpg") no-repeat center top; 
    border:0; 
    position: absolute; 
    top: 0px; 
    left: 0px; 
    padding:0; 
    text-indent:-9999px; 
    display: block; 
    height: 111px; 
    width: 100%; 
    z-index: 2; 
} 
#content { 
    background: url("/images/copy-bg.png") repeat scroll 0 0 transparent; 
    padding: 10px; 
    position: absolute; 
    top:120px; 
    right:200px; 
    width: 450px; 
    z-index: 3; 
} 
ul, li, p { 
    font-size: .95em; 
    line-height: 1.5em; 
} 
+0

L'image n'apparaît pas parce que vous êtes #container et votre corps ont tous les deux pas de hauteur. Comme vous avez positionné les éléments enfants absolument leurs dimensions n'ont plus aucun effet sur leurs éléments parents ou frères. Je ne pense pas que le positionnement soit le moyen pour vous d'obtenir l'effet que vous voulez. Découvrez cet exemple - Je l'ai seulement regardé en chrome, mais il devrait aider: http://jsbin.com/ahike4/ – lnrbob

+0

Wow c'est parfait! Merci de le simplifier en supprimant le positionnement et en ajoutant simplement margin-left à #content. Beaucoup plus propre maintenant! – Leslie

Répondre

4

Comme vous le savez la largeur de l'élément positionné absolu, vous pouvez définir à gauche: 50% marge gauche: -225px.

Ceci placera le bord gauche du conteneur au milieu de son enveloppe, puis le déplacera à gauche de la moitié de sa propre largeur. Cela fonctionnera lorsque vous connaîtrez la largeur du conteneur mais pas celle de l'encapsuleur.

C'est la seule méthode que je connaisse qui fonctionnera. Ce n'est pas très joli mais j'espère que ça fonctionne pour vous!

+0

ahh je vois, vous ne voulez pas utiliser le positionnement absolu. Je crois que vous devriez repenser votre code HTML. Si vous souhaitez un redimensionnement des fluides, vous devrez utiliser des pourcentages. Vous pouvez également déplacer la #topbar hors du conteneur #, définir la largeur #container et utiliser margin: 0 auto pour centrer le #container. Ensuite, vous pouvez utiliser le css #content fourni par Vinay BR ci-dessus – lnrbob

+0

J'ai essayé les deux méthodes: 1) pourcentages et 2) déplacer #topbar hors de #container et mettre en œuvre #contenu de Vinay BR. Le DIV continuait à apparaître au mauvais endroit. J'ai mis à jour le CSS à la suggestion de quelqu'un d'autre. Voir la question éditée. – Leslie

0

Vous ne savez pas exactement ce que vous essayez d'obtenir. ne sont pas nécessaires enrubanneuse et div conteneur de tout et essayez d'utiliser ce que vous #Content classe

#content 
{ 
    background:url("/images/copy-bg.png") repeat scroll 0 0 transparent; 
    float:right; 
    padding:10px; 
    text-align:left; 
    width:450px; 

}

+0

Merci, j'ai ajouté vos suggestions à l'arrière-plan, mais flotter à droite rend la DIV trop loin de l'homme d'affaires et trop près du bord. J'aimerais garder la DIV au même endroit que l'image dans mon commentaire ci-dessus. J'ai retiré la div wrapper! – Leslie

Questions connexes